From e71e4ce43f6be336c5e64eb5b20b2725148acd22 Mon Sep 17 00:00:00 2001 From: lugimzzz <zhenglujing@baidu.com> Date: Thu, 10 Apr 2025 20:59:01 +0800 Subject: [PATCH 01/12] add loralinear --- paddlenlp/peft/lora/lora_model.py | 150 ++----- .../peft/lora/lora_quantization_layers.py | 371 ++++-------------- paddlenlp/quantization/quantization_linear.py | 181 ++++----- paddlenlp/quantization/quantization_utils.py | 78 +++- 4 files changed, 272 insertions(+), 508 deletions(-) diff --git a/paddlenlp/peft/lora/lora_model.py b/paddlenlp/peft/lora/lora_model.py index f120ed33189f..0914f1b3ca78 100644 --- a/paddlenlp/peft/lora/lora_model.py +++ b/paddlenlp/peft/lora/lora_model.py @@ -97,6 +97,18 @@ def get_lora_layers(): LoRALinear = lora_layers["LoRALinear"] RowParallelLoRALinear = lora_layers["RowParallelLoRALinear"] RowSequenceParallelLoRALinear = lora_layers["RowSequenceParallelLoRALinear"] + +from ...quantization.quantization_linear import ( + ColumnParallelQuantizationLinear, + QuantizationLinear, + RowParallelQuantizationLinear, +) +from .lora_quantization_layers import ( + ColumnParallelQuantizationLoRALinear, + QuantizationLoRALinear, + RowParallelQuantizationLoRALinear, +) + AVAILABLE_LAYERS = [ ColumnParallelLoRALinear, ColumnSequenceParallelLoRALinear, @@ -104,31 +116,10 @@ def get_lora_layers(): LoRALinear, RowParallelLoRALinear, RowSequenceParallelLoRALinear, + ColumnParallelQuantizationLoRALinear, + QuantizationLoRALinear, + RowParallelQuantizationLoRALinear, ] -try: - from ...quantization.quantization_linear import ( - ColumnParallelQuantizationLinear, - QuantizationLinear, - RowParallelQuantizationLinear, - ) - from .lora_quantization_layers import ( - ColumnParallelQuantizationLoRALinear, - QuantizationLoRALinear, - RowParallelQuantizationLoRALinear, - ) - - AVAILABLE_LAYERS += [ - ColumnParallelQuantizationLoRALinear, - QuantizationLoRALinear, - RowParallelQuantizationLoRALinear, - ] -except: - QuantizationLinear = None - ColumnParallelQuantizationLinear = None - RowParallelQuantizationLinear = None - QuantizationLoRALinear = None - ColumnParallelQuantizationLoRALinear = None - RowParallelQuantizationLoRALinear = None class LoRAModel(nn.Layer): @@ -426,11 +417,6 @@ def save_pretrained(self, save_directory: str, merge_tensor_parallel: bool = Fal if self.is_pipelinemodel: self.model._single_to_pp_mapping = None - if self.quantized and merge_tensor_parallel and self.lora_config.tensor_parallel_degree > 1: - merge_tensor_parallel = False - logger.warning( - "Quantized strategy does not support merge_tensor_parallel. Set merge_tensor_parallel to False." - ) if self.is_pipelinemodel and merge_tensor_parallel and self.lora_config.tensor_parallel_degree > 1: merge_tensor_parallel = False logger.warning( @@ -479,7 +465,7 @@ def save_pretrained(self, save_directory: str, merge_tensor_parallel: bool = Fal model_config_to_save.tensor_parallel_degree = -1 model_config_to_save.save_pretrained(save_directory) - def _find_and_replace_module(self, model, module_name, lora_config, enable_lora): + def _find_and_replace_module(self, model, module_name, lora_config): parent_module = model attribute_chain = module_name.split(".") for name in attribute_chain[:-1]: @@ -621,68 +607,20 @@ def _find_and_replace_module(self, model, module_name, lora_config, enable_lora) self.add_lora_split_mapping(module_name + ".weight_quanter._scale", is_column=False) self.add_lora_split_mapping(module_name + ".activation_quanter._scale", is_column=False) self.add_lora_split_mapping(module_name + ".activation_quanter.quanter._scale", is_column=False) - elif QuantizationLinear is not None and isinstance(module, QuantizationLinear): - lora_module = QuantizationLoRALinear( - in_features=module.in_features, - out_features=module.out_features, - quant_algo=module.quant_algo, - dtype=module._dtype, - bias_attr=False if module.bias is None else None, - block_size=module.block_size, - double_quant_block_size=module.double_quant_block_size, - double_quant=module.double_quant, - r=lora_config.r, - lora_alpha=lora_config.lora_alpha, - lora_dropout=lora_config.lora_dropout, - ) - self.quantized = True - elif ColumnParallelQuantizationLinear is not None and isinstance(module, ColumnParallelQuantizationLinear): - lora_module = ColumnParallelQuantizationLoRALinear( - in_features=module.in_features, - out_features=module.out_features, - quant_algo=module.quant_algo, - dtype=module._dtype, - bias_attr=False if module.bias is None else None, - gather_output=module.gather_output, - r=lora_config.r, - lora_alpha=lora_config.lora_alpha, - lora_dropout=lora_config.lora_dropout, - lora_A_weight_attr=paddle.ParamAttr( - initializer=nn.initializer.KaimingUniform(negative_slope=math.sqrt(5), nonlinearity="leaky_relu") - ), - ) - self.quantized = True - elif RowParallelQuantizationLinear is not None and isinstance(module, RowParallelQuantizationLinear): - lora_module = RowParallelQuantizationLoRALinear( - in_features=module.in_features, - out_features=module.out_features, - quant_algo=module.quant_algo, - dtype=module._dtype, - bias_attr=False if module.bias is None else None, - input_is_parallel=module.input_is_parallel, - r=lora_config.r, - lora_alpha=lora_config.lora_alpha, - lora_dropout=lora_config.lora_dropout, - ) - self.quantized = True + elif isinstance(module, QuantizationLinear): + lora_module = QuantizationLoRALinear(module, lora_config) + elif isinstance(module, ColumnParallelQuantizationLinear): + lora_module = ColumnParallelQuantizationLoRALinear(module, lora_config) + elif isinstance(module, RowParallelQuantizationLinear): + lora_module = RowParallelQuantizationLoRALinear(module, lora_config) if lora_module is None: raise ValueError( f"LoRA strategy only supports paddle.nn.Linear or paddle.distributed.fleet.meta_parallel.ColumnParallelLinear or paddlenlp.transformers.sequence_utils. {module}({module_name} {type(module).__name__}) is not supported。" ) - if getattr(lora_module, "quant_weight", None) is not None: - lora_module.quant_weight = module.quant_weight - if getattr(lora_module, "quant_scale", None) is not None: - lora_module.quant_scale = module.quant_scale - if getattr(lora_module, "qquant_scale", None) is not None: - lora_module.qquant_scale = module.qquant_scale - if getattr(lora_module, "double_quant_scale", None) is not None: - lora_module.double_quant_scale = module.double_quant_scale - if getattr(lora_module, "quant_sacle_offset", None) is not None: - lora_module.quant_sacle_offset = module.quant_sacle_offset - else: + if getattr(lora_module, "weight", None) is not None: lora_module.weight = module.weight - if module.bias is not None: - lora_module.bias = module.bias + if module.bias is not None: + lora_module.bias = module.bias setattr(parent_module, attribute_chain[-1], lora_module) def _find_and_restore_module(self, module_name): @@ -768,45 +706,11 @@ def get_lora_model(self, model: Union[PretrainedModel, nn.Layer], lora_config: L if lora_config.target_modules is None: return model - elif isinstance(lora_config.target_modules, str): - target_modules = [lora_config.target_modules] - if lora_config.enable_lora_list is None or ( - isinstance(lora_config.enable_lora_list, List) - and all(isinstance(item, bool) for item in lora_config.enable_lora_list) - ): - enable_lora_list = [lora_config.enable_lora_list] - else: - raise TypeError( - f"Invalid `enable_lora_list` value: {lora_config.enable_lora_list}. Since `target_modules` is `str`, `enable_lora_list` must be `None` or `List[bool]`" - ) - else: - target_modules = lora_config.target_modules - if lora_config.enable_lora_list is None: - enable_lora_list = [None for _ in range(len(target_modules))] - elif isinstance(lora_config.enable_lora_list, List): - enable_lora_list = lora_config.enable_lora_list - if len(enable_lora_list) != len(target_modules): - raise TypeError( - f"Invalid lora_config.enable_lora_list value: {lora_config.enable_lora_list}. Since lora_config.target_modules is `List[str]`, `enable_lora_list` should have the same length as `target_modules`" - ) - for enable_lora in enable_lora_list: - if not ( - enable_lora is None - or (isinstance(enable_lora, List) and all(isinstance(item, bool) for item in enable_lora)) - ): - raise TypeError( - f"Invalid `enable_lora_list` value: {lora_config.enable_lora_list}. Since `target_modules` is `List[str]`, `enable_lora_list` must be `None` or `List[Optional[List[bool]]]`" - ) - else: - raise TypeError( - f"Invalid `enable_lora_list` value: {lora_config.enable_lora_list}. Since `target_modules` is `List[str]`, `enable_lora_list` must be `None` or `List[Optional[List[bool]]]`" - ) - - for target_module, enable_lora in zip(target_modules, enable_lora_list): + for target_module in target_modules: for i in model.named_sublayers(): module_name = i[0] if re.fullmatch(target_module, module_name): - self._find_and_replace_module(model, module_name, lora_config, enable_lora) + self._find_and_replace_module(model, module_name, lora_config) return model def restore_original_model(self): diff --git a/paddlenlp/peft/lora/lora_quantization_layers.py b/paddlenlp/peft/lora/lora_quantization_layers.py index cf9510951a8c..b97b3394ab14 100644 --- a/paddlenlp/peft/lora/lora_quantization_layers.py +++ b/paddlenlp/peft/lora/lora_quantization_layers.py @@ -17,9 +17,9 @@ import paddle from paddle import nn from paddle.distributed.fleet.layers.mpu import mp_ops -from paddle.nn.quant import weight_dequantize, weight_only_linear, weight_quantize +from paddle.nn.quant import weight_only_linear, weight_quantize -from ...quantization.qlora import qlora_weight_dequantize, qlora_weight_quantize +from ...quantization.qlora import qlora_weight_quantize from ...quantization.quantization_linear import ( ColumnParallelQuantizationLinear, QuantizationLinear, @@ -39,53 +39,34 @@ class QuantizationLoRALinear(QuantizationLinear): def __init__( self, - in_features, - out_features, - quant_algo, - dtype, - weight_attr=None, - scale_attr=None, - bias_attr=None, - block_size=64, - double_quant_block_size=256, - double_quant=False, - qquant_scale_attr=None, - double_quant_scale_attr=None, - quant_sacle_offset_attr=None, - quant_scale_attr=None, - llm_int8_threshold=6.0, - r: int = 0, - lora_alpha: int = 1, - lora_dropout: float = 0.0, + module, + lora_config ): - super().__init__( - in_features, - out_features, - quant_algo, - dtype, - weight_attr, - scale_attr, - bias_attr, - block_size, - double_quant_block_size, - double_quant, - qquant_scale_attr, - double_quant_scale_attr, - quant_sacle_offset_attr, - quant_scale_attr, - llm_int8_threshold, - ) - if not isinstance(r, int) or r <= 0: + self.quantization_config = module.quantization_config + self.weight_quantize_algo = module.weight_quantize_algo + self._dtype = module._dtype + self.quant_dtype = module.quant_dtype + self.quant_weight = module.quant_weight + if self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant: + self.qquant_scale = module.qquant_scale + self.double_quant_scale = module.double_quant_scale + self.quant_scale_offset = module.quant_scale_offset + else: + self.quant_scale = module.quant_scale + self.bias = module.bias + self.lora_config = lora_config + if not isinstance(self.lora_config.r, int) or self.lora_config.r <= 0: raise ValueError("Lora rank r should be a positive integer") - if self.quant_algo == "llm.int8": + if self.weight_quantize_algo == "llm.int8": raise NotImplementedError("llm.int8 not yet support lora strategy.") - self.in_features = in_features - self.out_features = out_features - self.r = r - self.lora_alpha = lora_alpha + if self.lora_config.rslora: + self.scaling = self.lora_config.lora_alpha / math.sqrt(self.lora_config.r) + else: + self.scaling = self.lora_config.lora_alpha / self.lora_config.r + self.disable_lora = False + # Mark the weight as unmerged - self.merged = False # Optional dropout if lora_dropout > 0.0: self.lora_dropout = nn.Dropout(p=lora_dropout) @@ -94,92 +75,30 @@ def __init__( # Actual trainable parameters self.lora_A = self.create_parameter( - shape=[in_features, r], + shape=[module.in_features, self.lora_config.r], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.KaimingUniform(negative_slope=math.sqrt(5), nonlinearity="leaky_relu"), ) self.lora_B = self.create_parameter( - shape=[r, out_features], + shape=[self.lora_config.r, module.out_features], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.Constant(value=0.0), ) - self.weight = None - self.scaling = self.lora_alpha / self.r - self.disable_lora = False - - def dequantize_weight(self): - if self.quant_algo in ["fp4", "nf4"]: - new_weight = ( - qlora_weight_dequantize( - quant_weight=self.quant_weight, - quant_algo=self.quant_algo, - state=(self.qquant_scale, self.double_quant_scale, self.quant_scale_offset) - if self.double_quant - else self.quant_scale, - double_quant=self.double_quant, - block_size=self.block_size, - double_quant_block_size=self.double_quant_block_size, - ) - .cast(self._dtype) - .reshape([self.in_features, self.out_features]) - ) - elif self.quant_algo in ["weight_only_int8"]: - new_weight = weight_dequantize(self.quant_weight, self.quant_scale, self.quant_algo, self._dtype) - else: - raise NotImplementedError(f"{self.quant_algo} not yet support lora merge strategy.") - return new_weight - - def quantize_weight(self, new_weight): - if self.quant_algo in ["fp4", "nf4"]: - print("self.quant_weight", self.quant_weight) - quant_weight, quant_state = qlora_weight_quantize( - weight=new_weight, - quant_algo=self.quant_algo, - double_quant=self.double_quant, - block_size=self.block_size, - double_quant_block_size=self.double_quant_block_size, - return_dict=False, - ) - print("quant_weight", quant_weight) - self.quant_weight.set_value(quant_weight) - if self.double_quant: - qquant_scale, double_quant_scale, quant_sacle_offset = quant_state - self.qquant_scale.set_value(qquant_scale) - self.double_quant_scale.set_value(double_quant_scale) - self.quant_sacle_offset.set_value(quant_sacle_offset) - else: - quant_scale = quant_state - self.quant_scale.set_value(quant_scale) - elif self.quant_algo in ["weight_only_int8"]: - quant_weight, quant_scale = weight_quantize(new_weight, self.quant_algo) - self.quant_weight.set_value(quant_weight) - self.quant_scale.set_value(quant_scale) - else: - raise NotImplementedError(f"{self.quant_algo} not yet support lora merge strategy.") - def unmerge(self): - if self.merged: - # Make sure that the weights are not merged - new_weight = self.dequantize_weight() - new_weight -= self.lora_A @ self.lora_B * self.scaling - self.quantize_weight(new_weight) - self.merged = False - def merge(self): - if not self.merged: - # Merge the weights and mark it - new_weight = self.dequantize_weight() - new_weight += self.lora_A @ self.lora_B * self.scaling - self.quantize_weight(new_weight) - self.merged = True - - def forward(self, x: paddle.Tensor): + def forward(self, x): result = super().forward(x) - if not self.merged and not self.disable_lora: + if not self.disable_lora: result += (self.lora_dropout(x) @ self.lora_A @ self.lora_B) * self.scaling return result + + def merge(self): + logger.warning("QuantizationLoRALinear does not support merge()") + + def unmerge(self): + logger.warning("QuantizationLoRALinear does not support unmerge()") class ColumnParallelQuantizationLoRALinear(ColumnParallelQuantizationLinear): @@ -193,41 +112,41 @@ class ColumnParallelQuantizationLoRALinear(ColumnParallelQuantizationLinear): def __init__( self, - in_features, - out_features, - quant_algo, - dtype, - weight_attr=None, - scale_attr=None, - bias_attr=None, - gather_output=True, - mp_group=None, - r=0, - lora_alpha=1, - lora_dropout=0.0, - lora_A_weight_attr=None, + module, + lora_config ): - ColumnParallelQuantizationLinear.__init__( - self, - in_features, - out_features, - quant_algo, - dtype, - weight_attr, - scale_attr, - bias_attr, - gather_output, - mp_group, - ) - if not isinstance(r, int) or r <= 0: + + self.quantization_config = module.quantization_config + self.weight_quantize_algo = module.weight_quantize_algo + self._dtype = module._dtype + self.quant_dtype = module.quant_dtype + self.quant_weight = module.quant_weight + if self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant: + self.qquant_scale = module.qquant_scale + self.double_quant_scale = module.double_quant_scale + self.quant_scale_offset = module.quant_scale_offset + else: + self.quant_scale = module.quant_scale + self.bias = module.bias + self.lora_config = lora_config + if not isinstance(self.lora_config.r, int) or self.lora_config.r <= 0: raise ValueError("Lora rank r should be a positive integer") - if self.quant_algo == "llm.int8": + if self.weight_quantize_algo == "llm.int8": raise NotImplementedError("llm.int8 not yet support lora strategy.") - if self.quant_algo in ["fp4", "nf4"]: - raise NotImplementedError(f"{self.quant_algo} not yet support tensor parallelism.") + if self.lora_config.rslora: + self.scaling = self.lora_config.lora_alpha / math.sqrt(self.lora_config.r) + else: + self.scaling = self.lora_config.lora_alpha / self.lora_config.r + self.disable_lora = False - self.r = r - self.lora_alpha = lora_alpha + # Parallel parameters + self.model_parallel_group = module.model_parallel_group + self.world_size = module.world_size + self.is_mp = module.is_mp + self.gather_output = module.gather_output + self.sequence_parallel = module.sequence_parallel + + # Mark the weight as unmerged # Optional dropout if lora_dropout > 0.0: self.lora_dropout = nn.Dropout(p=lora_dropout) @@ -236,32 +155,29 @@ def __init__( # Actual trainable parameters self.lora_A = self.create_parameter( - shape=[in_features, r], + shape=[module.in_features, self.lora_config.r], dtype=self._dtype, is_bias=False, - attr=lora_A_weight_attr, + default_initializer=nn.initializer.KaimingUniform(negative_slope=math.sqrt(5), nonlinearity="leaky_relu"), ) self.lora_A.is_distributed = False - with rng_ctx(self.is_mp, paddle.in_dynamic_mode()): - self.lora_B = self.create_parameter( - shape=[r, self.output_size_per_partition], - dtype=self._dtype, - is_bias=False, - default_initializer=nn.initializer.Constant(value=0.0), - ) + self.lora_B = self.create_parameter( + shape=[self.lora_config.r, module.output_size_per_partition], + dtype=self._dtype, + is_bias=False, + default_initializer=nn.initializer.Constant(value=0.0), + ) self.lora_B.is_distributed = True self.lora_B.split_axis = 1 - self.scaling = self.lora_alpha / self.r - self.disable_lora = False - # Mark the weight as unmerged - self.merged = False def forward(self, x): result_mp = super().forward(x) - if not self.disable_lora or not self.merged: + if not self.disable_lora: input_a = self.lora_dropout(x) @ self.lora_A + if self.sequence_parallel: + input_a = AllGatherOp.apply(input_a) input_a_mp = mp_ops._c_identity(input_a, group=self.model_parallel_group) delta_mp = (input_a_mp @ self.lora_B) * self.scaling result_mp += delta_mp @@ -272,69 +188,11 @@ def forward(self, x): result = result_mp return result - def dequantize_weight(self): - if self.quant_algo in ["fp4", "nf4"]: - new_weight = ( - qlora_weight_dequantize( - quant_weight=self.quant_weight, - quant_algo=self.quant_algo, - state=(self.qquant_scale, self.double_quant_scale, self.quant_scale_offset) - if self.double_quant - else self.quant_scale, - double_quant=self.double_quant, - block_size=self.block_size, - double_quant_block_size=self.double_quant_block_size, - ) - .cast(self._dtype) - .reshape([self.in_features, self.out_features]) - ) - elif self.quant_algo in ["weight_only_int8"]: - new_weight = weight_dequantize(self.quant_weight, self.quant_scale, self.quant_algo, self._dtype) - else: - raise NotImplementedError(f"{self.quant_algo} not yet support lora merge strategy.") - return new_weight - - def quantize_weight(self, new_weight): - if self.quant_algo in ["fp4", "nf4"]: - quant_weight, quant_state = qlora_weight_quantize( - weight=new_weight, - quant_algo=self.quant_algo, - double_quant=self.double_quant, - block_size=self.block_size, - double_quant_block_size=self.double_quant_block_size, - return_dict=False, - ) - self.quant_weight.set_value(quant_weight) - if self.double_quant: - qquant_scale, double_quant_scale, quant_sacle_offset = quant_state - self.qquant_scale.set_value(qquant_scale) - self.double_quant_scale.set_value(double_quant_scale) - self.quant_sacle_offset.set_value(quant_sacle_offset) - else: - quant_scale = quant_state - self.quant_scale.set_value(quant_scale) - elif self.quant_algo in ["weight_only_int8"]: - quant_weight, quant_scale = weight_quantize(new_weight, self.quant_algo) - self.quant_weight.set_value(quant_weight) - self.quant_scale.set_value(quant_scale) - else: - raise NotImplementedError(f"{self.quant_algo} not yet support lora merge strategy.") + def merge(self): + logger.warning("ColumnParallelQuantizationLoRALinear does not support merge()") def unmerge(self): - if self.merged: - # Make sure that the weights are not merged - new_weight = self.dequantize_weight() - new_weight -= self.lora_A @ self.lora_B * self.scaling - self.quantize_weight(new_weight) - self.merged = False - - def merge(self): - if not self.merged: - # Merge the weights and mark it - new_weight = self.dequantize_weight() - new_weight += self.lora_A @ self.lora_B * self.scaling - self.quantize_weight(new_weight) - self.merged = True + logger.warning("ColumnParallelQuantizationLoRALinearr does not support unmerge()") class RowParallelQuantizationLoRALinear(RowParallelQuantizationLinear): @@ -408,7 +266,6 @@ def __init__( self.lora_B.is_distributed = False self.scaling = self.lora_alpha / self.r self.disable_lora = False - self.merged = False def forward(self, x: paddle.Tensor): if not self.input_is_parallel: @@ -416,6 +273,8 @@ def forward(self, x: paddle.Tensor): else: input_mp = x + output = super().forward(x) + # x @ W : [bz, in_f / ws] ===> [bz, out_f] with paddle.amp.auto_cast(enable=False): result_mp = weight_only_linear(input_mp, self.quant_weight, None, self.quant_scale, self.quant_dtype) @@ -426,7 +285,7 @@ def forward(self, x: paddle.Tensor): use_calc_stream=True, use_model_parallel=True, ) - if not self.disable_lora or not self.merged: + if not self.disable_lora: # x @ A: [bz, in_f/ ws] ===> [bz, r] input_mp = self.lora_dropout(input_mp) @ self.lora_A # all reduce to keep Lora B's gradient on different gpu consistent @@ -442,66 +301,8 @@ def forward(self, x: paddle.Tensor): output = output + self.bias if self.bias is not None else output return output - def dequantize_weight(self): - if self.quant_algo in ["fp4", "nf4"]: - new_weight = ( - qlora_weight_dequantize( - quant_weight=self.quant_weight, - quant_algo=self.quant_algo, - state=(self.qquant_scale, self.double_quant_scale, self.quant_scale_offset) - if self.double_quant - else self.quant_scale, - double_quant=self.double_quant, - block_size=self.block_size, - double_quant_block_size=self.double_quant_block_size, - ) - .cast(self._dtype) - .reshape([self.in_features, self.out_features]) - ) - elif self.quant_algo in ["weight_only_int8"]: - new_weight = weight_dequantize(self.quant_weight, self.quant_scale, self.quant_algo, self._dtype) - else: - raise NotImplementedError(f"{self.quant_algo} not yet support lora merge strategy.") - return new_weight - - def quantize_weight(self, new_weight): - if self.quant_algo in ["fp4", "nf4"]: - quant_weight, quant_state = qlora_weight_quantize( - weight=new_weight, - quant_algo=self.quant_algo, - double_quant=self.double_quant, - block_size=self.block_size, - double_quant_block_size=self.double_quant_block_size, - return_dict=False, - ) - self.quant_weight.set_value(quant_weight) - if self.double_quant: - qquant_scale, double_quant_scale, quant_sacle_offset = quant_state - self.qquant_scale.set_value(qquant_scale) - self.double_quant_scale.set_value(double_quant_scale) - self.quant_sacle_offset.set_value(quant_sacle_offset) - else: - quant_scale = quant_state - self.quant_scale.set_value(quant_scale) - elif self.quant_algo in ["weight_only_int8"]: - quant_weight, quant_scale = weight_quantize(new_weight, self.quant_algo) - self.quant_weight.set_value(quant_weight) - self.quant_scale.set_value(quant_scale) - else: - raise NotImplementedError(f"{self.quant_algo} not yet support lora merge strategy.") + def merge(self): + logger.warning("QuantizationLoRALinear does not support merge()") def unmerge(self): - if self.merged: - # Make sure that the weights are not merged - new_weight = self.dequantize_weight() - new_weight -= self.lora_A @ self.lora_B * self.scaling - self.quantize_weight(new_weight) - self.merged = False - - def merge(self): - if not self.merged: - # Merge the weights and mark it - new_weight = self.dequantize_weight() - new_weight += self.lora_A @ self.lora_B * self.scaling - self.quantize_weight(new_weight) - self.merged = True + logger.warning("QuantizationLoRALinear does not support unmerge()") diff --git a/paddlenlp/quantization/quantization_linear.py b/paddlenlp/quantization/quantization_linear.py index 55e1e81c0f50..f4c75f2399fc 100644 --- a/paddlenlp/quantization/quantization_linear.py +++ b/paddlenlp/quantization/quantization_linear.py @@ -16,17 +16,12 @@ import paddle.nn as nn from paddle.distributed.fleet.base import topology as tp from paddle.distributed.fleet.layers.mpu import mp_ops +from paddle.distributed.fleet.utils.sequence_parallel_utils import ( + AllGatherOp, + ReduceScatterOp, +) -try: - from paddle.nn.quant import llm_int8_linear, weight_only_linear -except: - llm_int8_linear = None - weight_only_linear = None -try: - from .qlora import qlora_weight_linear -except: - qlora_weight_linear = None - +from .quantization_utils import quant_weight_linear QuantMapping = { # (quant_dtype, quant_weight_bit) @@ -131,35 +126,20 @@ def __init__( ) def forward(self, x): - with paddle.amp.auto_cast(enable=False): - if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4"]: - out = weight_only_linear( - x=x, - weight=self.quant_weight, - bias=self.bias, - weight_scale=self.quant_scale, - weight_dtype=self.quant_dtype, - group_size=self.quantization_config.group_size, - ) - elif self.weight_quantize_algo in ["llm.int8"]: - out = llm_int8_linear( - x, self.quant_weight, self.bias, self.quant_scale, self.self.quantization_config.llm_int8_threshold - ) - elif self.weight_quantize_algo in ["fp4", "nf4"]: - out = qlora_weight_linear( - x=x, - quant_weight=self.quant_weight, - dtype=self._dtype, - state=(self.qquant_scale, self.double_quant_scale, self.quant_scale_offset) - if self.quantization_config.qlora_weight_double_quant - else self.quant_scale, - quant_algo=self.weight_quantize_algo, - double_quant=self.quantization_config.qlora_weight_double_quant, - block_size=self.quantization_config.qlora_weight_blocksize, - double_quant_block_size=self.quantization_config.qlora_weight_double_quant_block_size, - bias=self.bias, - ) - return out + output = quant_weight_linear( + x=x, + quant_weight=self.quant_weight, + quant_dtype=self.quant_dtype, + quantization_config=self.quantization_config, + weight_quantize_algo=self.weight_quantize_algo, + dtype=self._dtype, + quant_scale=self.quant_scale, + quant_state=(self.qquant_scale, self.double_quant_scale, self.quant_scale_offset) + if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) + else None, + bias=self.bias, + ) + return output class ColumnParallelQuantizationLinear(nn.Layer): @@ -183,6 +163,7 @@ def __init__( gather_output=True, mp_skip_c_identity=False, mp_group=None, + sequence_parallel=False, ): super().__init__() self.in_features = in_features @@ -201,6 +182,9 @@ def __init__( ) self.is_mp = self.world_size > 1 self.gather_output = gather_output + self.sequence_parallel = sequence_parallel + if self.sequence_parallel and self.gather_output: + raise ValueError("Sequence parallel does not support gather_output") # PaddlePaddle dosen't support Int4 data type, one Int8 data represents two Int4 data. if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8"]: @@ -244,32 +228,30 @@ def __init__( def forward(self, x): if self.is_mp: - input_parallel = mp_ops._c_identity( - x, - group=self.model_parallel_group, - skip_c_identity_dynamic=self.mp_skip_c_identity, - ) + if self.sequence_parallel: + input_parallel = AllGatherOp.apply(x) + else: + input_parallel = mp_ops._c_identity( + x, + group=self.model_parallel_group, + skip_c_identity_dynamic=self.mp_skip_c_identity, + ) else: input_parallel = x - # with paddle.amp.auto_cast(enable=False): - if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4"]: - output_parallel = weight_only_linear( - x=input_parallel, - weight=self.quant_weight, - bias=self.bias, - weight_scale=self.quant_scale, - weight_dtype=self.quant_dtype, - group_size=self.quantization_config.group_size, - ) - elif self.weight_quantize_algo in ["llm.int8"]: - output_parallel = llm_int8_linear( - input_parallel, - self.quant_weight, - self.bias, - self.quant_scale, - self.self.quantization_config.llm_int8_threshold, - ) + output_parallel = quant_weight_linear( + x=input_parallel, + quant_weight=self.quant_weight, + quant_dtype=self.quant_dtype, + quantization_config=self.quantization_config, + weight_quantize_algo=self.weight_quantize_algo, + dtype=self._dtype, + quant_scale=self.quant_scale, + quant_state=(self.qquant_scale, self.double_quant_scale, self.quant_scale_offset) + if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) + else None, + bias=self.bias, + ) if self.gather_output and self.is_mp: output = mp_ops._c_concat(output_parallel, group=self.model_parallel_group) @@ -299,6 +281,7 @@ def __init__( input_is_parallel=False, mp_skip_c_identity=False, mp_group=None, + sequence_parallel=False, ): super().__init__() self.input_size_per_partition = input_size_per_partition @@ -317,6 +300,9 @@ def __init__( ) self.is_mp = self.world_size > 1 self.input_is_parallel = input_is_parallel + self.sequence_parallel = sequence_parallel + if not self.input_is_parallel and self.sequence_parallel: + raise ValueError("Sequence parallel only support input_is_parallel.") # PaddlePaddle dosen't support Int4 data type, one Int8 data represents two Int4 data. # paddle.nn.quant.weight_quantize will transpose in_features and out_features. @@ -366,44 +352,43 @@ def forward(self, x): # with paddle.amp.auto_cast(enable=False): if self.is_mp: - if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4"]: - output_parallel = weight_only_linear( - x=input_parallel, - weight=self.quant_weight, - bias=None, - weight_scale=self.quant_scale, - weight_dtype=self.quant_dtype, - group_size=self.quantization_config.group_size, - ) - elif self.weight_quantize_algo in ["llm.int8"]: - output_parallel = llm_int8_linear( - input_parallel, - self.quant_weight, - None, - self.quant_scale, - self.quantization_config.llm_int8_threshold, - ) - output_ = mp_ops._mp_allreduce( - output_parallel, - group=self.model_parallel_group, - use_calc_stream=True, - use_model_parallel=True, - skip_c_identity_dynamic=self.mp_skip_c_identity, + output_parallel = quant_weight_linear( + x=input_parallel, + quant_weight=self.quant_weight, + quant_dtype=self.quant_dtype, + quantization_config=self.quantization_config, + weight_quantize_algo=self.weight_quantize_algo, + dtype=self._dtype, + quant_scale=self.quant_scale, + quant_state=(self.qquant_scale, self.double_quant_scale, self.quant_scale_offset) + if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) + else None, + bias=None, ) + if self.sequence_parallel: + output_ = ReduceScatterOp.apply(output_parallel) + else: + output_ = mp_ops._mp_allreduce( + output_parallel, + group=self.model_parallel_group, + use_calc_stream=True, + use_model_parallel=True, + skip_c_identity_dynamic=self.mp_skip_c_identity, + ) output = output_ + self.bias if self.bias is not None else output_ else: - if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4"]: - output = weight_only_linear( - x=input_parallel, - weight=self.quant_weight, - bias=self.bias, - weight_scale=self.quant_scale, - weight_dtype=self.quant_dtype, - group_size=self.quantization_config.group_size, - ) - elif self.weight_quantize_algo in ["llm.int8"]: - output = llm_int8_linear( - input_parallel, self.quant_weight, self.bias, self.quant_scale, self.llm_int8_threshold - ) + output = quant_weight_linear( + x=input_parallel, + quant_weight=self.quant_weight, + quant_dtype=self.quant_dtype, + quantization_config=self.quantization_config, + weight_quantize_algo=self.weight_quantize_algo, + dtype=self._dtype, + quant_scale=self.quant_scale, + quant_state=(self.qquant_scale, self.double_quant_scale, self.quant_scale_offset) + if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) + else None, + bias=self.bias, + ) return output diff --git a/paddlenlp/quantization/quantization_utils.py b/paddlenlp/quantization/quantization_utils.py index e56a5a243f9d..7c9aa937f1f8 100644 --- a/paddlenlp/quantization/quantization_utils.py +++ b/paddlenlp/quantization/quantization_utils.py @@ -19,7 +19,16 @@ ColumnParallelLinear, RowParallelLinear, ) -from paddle.nn.quant import weight_quantize +from paddle.distributed.fleet.utils.sequence_parallel_utils import ( + ColumnSequenceParallelLinear, + RowSequenceParallelLinear, +) +from paddle.nn.quant import llm_int8_linear, weight_only_linear, weight_quantize + +try: + from .qlora import qlora_weight_linear +except: + qlora_weight_linear = None from ..utils.log import logger from .quantization_linear import ( @@ -33,7 +42,13 @@ except: qlora_weight_quantize = None -LINEAR_CLASSES = [nn.Linear, ColumnParallelLinear, RowParallelLinear] +LINEAR_CLASSES = [ + nn.Linear, + ColumnParallelLinear, + RowParallelLinear, + ColumnSequenceParallelLinear, + RowSequenceParallelLinear, +] def parse_weight_quantize_algo(quantization_config, name): @@ -96,6 +111,28 @@ def replace_with_quantization_linear(model, quantization_config, llm_int8_thresh input_is_parallel=child.input_is_parallel, mp_skip_c_identity=child.mp_skip_c_identity, ) + elif isinstance(child, ColumnSequenceParallelLinear): + quant_linear = ColumnParallelQuantizationLinear( + in_features=child.weight.shape[0], + output_size_per_partition=child.weight.shape[1], + quantization_config=quantization_config, + weight_quantize_algo=weight_quantize_algo, + dtype=child._dtype, + bias_attr=bias_attr, + gather_output=False, + sequence_parallel=True, + ) + elif isinstance(child, RowSequenceParallelLinear): + quant_linear = RowParallelQuantizationLinear( + input_size_per_partition=child.weight.shape[0], + out_features=child.weight.shape[1], + quantization_config=quantization_config, + weight_quantize_algo=weight_quantize_algo, + dtype=child._dtype, + bias_attr=bias_attr, + input_is_parallel=True, + sequence_parallel=True, + ) setattr(parent, last, quant_linear) del child @@ -206,3 +243,40 @@ def update_loaded_state_dict_keys(state_dict, quantization_linear_list, quantiza ) return state_dict + + +def quant_weight_linear( + x, + quant_weight, + quant_dtype, + quantization_config, + weight_quantize_algo, + dtype, + quant_scale=None, + quant_state=None, + bias=None, +): + if weight_quantize_algo in ["weight_only_int8", "weight_only_int4"]: + output = weight_only_linear( + x=x, + weight=quant_weight, + bias=bias, + weight_scale=quant_scale, + weight_dtype=quant_dtype, + group_size=quantization_config.group_size, + ) + elif weight_quantize_algo in ["llm.int8"]: + output = llm_int8_linear(x, quant_weight, bias, quant_scale, quantization_config.llm_int8_threshold) + elif weight_quantize_algo in ["fp4", "nf4"]: + output = qlora_weight_linear( + x=x, + quant_weight=quant_weight, + dtype=dtype, + state=quant_state if quantization_config.qlora_weight_double_quant else quant_scale, + quant_algo=weight_quantize_algo, + double_quant=quantization_config.qlora_weight_double_quant, + block_size=quantization_config.qlora_weight_blocksize, + double_quant_block_size=quantization_config.qlora_weight_double_quant_block_size, + bias=bias, + ) + return output From 7cda038a6dc8096065c7050d26c4199ee35f8571 Mon Sep 17 00:00:00 2001 From: lugimzzz <zhenglujing@baidu.com> Date: Fri, 11 Apr 2025 17:13:48 +0800 Subject: [PATCH 02/12] add wint8lora --- paddlenlp/peft/lora/lora_model.py | 7 +- .../peft/lora/lora_quantization_layers.py | 346 ++++++++---------- paddlenlp/quantization/quantization_linear.py | 4 + 3 files changed, 166 insertions(+), 191 deletions(-) diff --git a/paddlenlp/peft/lora/lora_model.py b/paddlenlp/peft/lora/lora_model.py index 0914f1b3ca78..807b5a845974 100644 --- a/paddlenlp/peft/lora/lora_model.py +++ b/paddlenlp/peft/lora/lora_model.py @@ -20,7 +20,7 @@ import tempfile from collections import OrderedDict from functools import partial -from typing import Dict, List, Union +from typing import Dict, Union import aistudio_sdk import numpy as np @@ -706,7 +706,10 @@ def get_lora_model(self, model: Union[PretrainedModel, nn.Layer], lora_config: L if lora_config.target_modules is None: return model - for target_module in target_modules: + if isinstance(lora_config.target_modules, str): + lora_config.target_modules = [lora_config.target_modules] + + for target_module in lora_config.target_modules: for i in model.named_sublayers(): module_name = i[0] if re.fullmatch(target_module, module_name): diff --git a/paddlenlp/peft/lora/lora_quantization_layers.py b/paddlenlp/peft/lora/lora_quantization_layers.py index b97b3394ab14..5efd0ceb9be4 100644 --- a/paddlenlp/peft/lora/lora_quantization_layers.py +++ b/paddlenlp/peft/lora/lora_quantization_layers.py @@ -1,4 +1,4 @@ -# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. +# Copyright (c) 2025 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,44 +17,34 @@ import paddle from paddle import nn from paddle.distributed.fleet.layers.mpu import mp_ops -from paddle.nn.quant import weight_only_linear, weight_quantize - -from ...quantization.qlora import qlora_weight_quantize -from ...quantization.quantization_linear import ( - ColumnParallelQuantizationLinear, - QuantizationLinear, - RowParallelQuantizationLinear, +from paddle.distributed.fleet.utils.sequence_parallel_utils import ( + AllGatherOp, + ReduceScatterOp, + mark_as_sequence_parallel_parameter, ) -from .utils import rng_ctx +from ...quantization.quantization_utils import quant_weight_linear +from ...utils.log import logger +from .utils import rng_ctx -class QuantizationLoRALinear(QuantizationLinear): - """ - Quantization lora Linear layer. - The code implementation refers to paddlenlp.peft.lora.lora_layers.LoRALinear. - https://github.com/PaddlePaddle/PaddleNLP/blob/develop/paddlenlp/peft/lora/lora_layers.py - Compare to LoRALinear, this class keeps weight in INT8/INT4 with quant scale, and supports - weight_only_linear for input tensor and origin weight(LoRA part still uses fp16/bf16). - """ - - def __init__( - self, - module, - lora_config - ): - self.quantization_config = module.quantization_config - self.weight_quantize_algo = module.weight_quantize_algo - self._dtype = module._dtype - self.quant_dtype = module.quant_dtype - self.quant_weight = module.quant_weight +class QuantizationLoRABaseLinear(nn.Layer): + def __init__(self, layer, lora_config): + # Model parameters + self.quantization_config = layer.quantization_config + self.weight_quantize_algo = layer.weight_quantize_algo + self._dtype = layer._dtype + self.quant_dtype = layer.quant_dtype + self.quant_weight = layer.quant_weight if self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant: - self.qquant_scale = module.qquant_scale - self.double_quant_scale = module.double_quant_scale - self.quant_scale_offset = module.quant_scale_offset + self.qquant_scale = layer.qquant_scale + self.double_quant_scale = layer.double_quant_scale + self.quant_scale_offset = layer.quant_scale_offset else: - self.quant_scale = module.quant_scale - self.bias = module.bias + self.quant_scale = layer.quant_scale + self.bias = layer.bias + + # LoRA related parameters self.lora_config = lora_config if not isinstance(self.lora_config.r, int) or self.lora_config.r <= 0: raise ValueError("Lora rank r should be a positive integer") @@ -68,40 +58,67 @@ def __init__( # Mark the weight as unmerged # Optional dropout - if lora_dropout > 0.0: - self.lora_dropout = nn.Dropout(p=lora_dropout) + if self.lora_config.lora_dropout > 0.0: + self.lora_dropout = nn.Dropout(p=self.lora_config.lora_dropout) else: self.lora_dropout = lambda x: x - # Actual trainable parameters + def forward(self, x): + output = quant_weight_linear( + x=x, + quant_weight=self.quant_weight, + quant_dtype=self.quant_dtype, + quantization_config=self.quantization_config, + weight_quantize_algo=self.weight_quantize_algo, + dtype=self._dtype, + quant_scale=self.quant_scale, + quant_state=(self.qquant_scale, self.double_quant_scale, self.quant_scale_offset) + if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) + else None, + bias=self.bias, + ) + return output + + def merge(self): + logger.warning("QuantizationLoRALinear does not support merge()") + + def unmerge(self): + logger.warning("QuantizationLoRALinear does not support unmerge()") + + +class QuantizationLoRALinear(QuantizationLoRABaseLinear): + """ + Quantization lora Linear layer. + The code implementation refers to paddlenlp.peft.lora.lora_layers.LoRALinear. + https://github.com/PaddlePaddle/PaddleNLP/blob/develop/paddlenlp/peft/lora/lora_layers.py + Compare to LoRALinear, this class keeps weight in INT8/INT4 with quant scale, and supports + weight_only_linear for input tensor and origin weight(LoRA part still uses fp16/bf16). + """ + + def __init__(self, layer, lora_config): + super(QuantizationLoRALinear, self).__init__(layer, lora_config) + # LoRA parameters self.lora_A = self.create_parameter( - shape=[module.in_features, self.lora_config.r], + shape=[layer.in_features, self.lora_config.r], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.KaimingUniform(negative_slope=math.sqrt(5), nonlinearity="leaky_relu"), ) self.lora_B = self.create_parameter( - shape=[self.lora_config.r, module.out_features], + shape=[self.lora_config.r, layer.out_features], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.Constant(value=0.0), ) - def forward(self, x): result = super().forward(x) if not self.disable_lora: result += (self.lora_dropout(x) @ self.lora_A @ self.lora_B) * self.scaling return result - - def merge(self): - logger.warning("QuantizationLoRALinear does not support merge()") - - def unmerge(self): - logger.warning("QuantizationLoRALinear does not support unmerge()") -class ColumnParallelQuantizationLoRALinear(ColumnParallelQuantizationLinear): +class ColumnParallelQuantizationLoRALinear(QuantizationLoRABaseLinear): """ Quantization lora Linear layer with mp parallelized(column). The code implementation refers to paddlenlp.peft.lora.lora_layers.ColumnParallelLoRALinear. @@ -110,59 +127,30 @@ class ColumnParallelQuantizationLoRALinear(ColumnParallelQuantizationLinear): weight_only_linear for input tensor and origin weight(LoRA part still uses fp16/bf16). """ - def __init__( - self, - module, - lora_config - ): - - self.quantization_config = module.quantization_config - self.weight_quantize_algo = module.weight_quantize_algo - self._dtype = module._dtype - self.quant_dtype = module.quant_dtype - self.quant_weight = module.quant_weight - if self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant: - self.qquant_scale = module.qquant_scale - self.double_quant_scale = module.double_quant_scale - self.quant_scale_offset = module.quant_scale_offset - else: - self.quant_scale = module.quant_scale - self.bias = module.bias - self.lora_config = lora_config - if not isinstance(self.lora_config.r, int) or self.lora_config.r <= 0: - raise ValueError("Lora rank r should be a positive integer") - if self.weight_quantize_algo == "llm.int8": - raise NotImplementedError("llm.int8 not yet support lora strategy.") - if self.lora_config.rslora: - self.scaling = self.lora_config.lora_alpha / math.sqrt(self.lora_config.r) - else: - self.scaling = self.lora_config.lora_alpha / self.lora_config.r - self.disable_lora = False + def __init__(self, layer, lora_config): + super(ColumnParallelQuantizationLoRALinear, self).__init__(layer, lora_config) # Parallel parameters - self.model_parallel_group = module.model_parallel_group - self.world_size = module.world_size - self.is_mp = module.is_mp - self.gather_output = module.gather_output - self.sequence_parallel = module.sequence_parallel - - # Mark the weight as unmerged - # Optional dropout - if lora_dropout > 0.0: - self.lora_dropout = nn.Dropout(p=lora_dropout) - else: - self.lora_dropout = lambda x: x + self.model_parallel_group = layer.model_parallel_group + self.world_size = layer.world_size + self.gather_output = layer.gather_output + self.sequence_parallel = layer.sequence_parallel + self.mp_skip_c_identity = layer.mp_skip_c_identity - # Actual trainable parameters + # LoRA parameters self.lora_A = self.create_parameter( - shape=[module.in_features, self.lora_config.r], + shape=[layer.in_features, self.lora_config.r], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.KaimingUniform(negative_slope=math.sqrt(5), nonlinearity="leaky_relu"), ) + # Sync lora_A parameters before training self.lora_A.is_distributed = False + if self.sequence_parallel: + mark_as_sequence_parallel_parameter(self.lora_A) + self.lora_B = self.create_parameter( - shape=[self.lora_config.r, module.output_size_per_partition], + shape=[self.lora_config.r, layer.output_size_per_partition], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.Constant(value=0.0), @@ -171,31 +159,43 @@ def __init__( self.lora_B.split_axis = 1 def forward(self, x): + # base_model forward + if self.sequence_parallel: + # forward: all_gather backward: reduce scatter + input_parallel = AllGatherOp.apply(x) + else: + # forward: identity backward: all reduce + input_parallel = mp_ops._c_identity( + x, + group=self.model_parallel_group, + skip_c_identity_dynamic=self.mp_skip_c_identity, + ) + output_parallel = super().forward(input_parallel) - result_mp = super().forward(x) - + # LoRA forward if not self.disable_lora: input_a = self.lora_dropout(x) @ self.lora_A if self.sequence_parallel: - input_a = AllGatherOp.apply(input_a) - input_a_mp = mp_ops._c_identity(input_a, group=self.model_parallel_group) - delta_mp = (input_a_mp @ self.lora_B) * self.scaling - result_mp += delta_mp - - if self.gather_output and self.is_mp: - result = mp_ops._c_concat(result_mp, group=self.model_parallel_group) + # forward: all_gather backward: reduce scatter + input_a_parallel = AllGatherOp.apply(input_a) + else: + # forward: identity backward: all reduce + input_a_parallel = mp_ops._c_identity( + input_a, + group=self.model_parallel_group, + skip_c_identity_dynamic=self.mp_skip_c_identity, + ) + delta_parallel = (input_a_parallel @ self.lora_B) * self.scaling + output_parallel += delta_parallel + + if self.gather_output: + output = mp_ops._c_concat(output_parallel, group=self.model_parallel_group) else: - result = result_mp - return result - - def merge(self): - logger.warning("ColumnParallelQuantizationLoRALinear does not support merge()") - - def unmerge(self): - logger.warning("ColumnParallelQuantizationLoRALinearr does not support unmerge()") + output = output_parallel + return output -class RowParallelQuantizationLoRALinear(RowParallelQuantizationLinear): +class RowParallelQuantizationLoRALinear(QuantizationLoRABaseLinear): """ Quantization lora Linear layer with mp parallelized(row). The code implementation refers to paddlenlp.peft.lora.lora_layers.RowParallelLoRALinear. @@ -204,105 +204,73 @@ class RowParallelQuantizationLoRALinear(RowParallelQuantizationLinear): weight_only_linear for input tensor and origin weight(LoRA part still uses fp16/bf16). """ - def __init__( - self, - in_features, - out_features, - quant_algo, - dtype, - weight_attr=None, - scale_attr=None, - bias_attr=None, - input_is_parallel=False, - mp_group=None, - r: int = 0, - lora_alpha: int = 1, - lora_dropout: float = 0.0, - ): - RowParallelQuantizationLinear.__init__( - self, - in_features, - out_features, - quant_algo, - dtype, - weight_attr, - scale_attr, - bias_attr, - input_is_parallel, - mp_group, - ) - if not isinstance(r, int) or r <= 0: - raise ValueError("Lora rank r should be a positive integer") - if self.quant_algo == "llm.int8": - raise NotImplementedError("llm.int8 not yet support lora strategy.") - if self.quant_algo in ["fp4", "nf4"]: - raise NotImplementedError(f"{self.quant_algo} not yet support tensor parallelism.") - self.r = r - self.lora_alpha = lora_alpha - # Optional dropout - if lora_dropout > 0.0: - self.lora_dropout = nn.Dropout(p=lora_dropout) - else: - self.lora_dropout = lambda x: x - - # Actual trainable parameters - with rng_ctx(self.is_mp, paddle.in_dynamic_mode()): + def __init__(self, layer, lora_config): + # Parallel parameters + self.model_parallel_group = layer.model_parallel_group + self.world_size = layer.world_size + self.input_is_parallel = layer.input_is_parallel + if not self.input_is_parallel and self.sequence_parallel: + raise ValueError("Sequence parallel only support input_is_parallel.") + self.sequence_parallel = layer.sequence_parallel + self.mp_skip_c_identity = layer.mp_skip_c_identity + + # LoRA parameters + with rng_ctx(True, paddle.in_dynamic_mode()): self.lora_A = self.create_parameter( - shape=[self.input_size_per_partition, r], + shape=[layer.input_size_per_partition, self.lora_config.r], dtype=self._dtype, is_bias=False, - attr=paddle.ParamAttr( - initializer=nn.initializer.KaimingUniform(negative_slope=math.sqrt(5), nonlinearity="leaky_relu") + default_initializer=nn.initializer.KaimingUniform( + negative_slope=math.sqrt(5), nonlinearity="leaky_relu" ), ) + self.lora_A.is_distributed = True + self.lora_A.split_axis = 0 + self.lora_B = self.create_parameter( - shape=[r, self.out_features], + shape=[self.lora_config.r, layer.out_features], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.Constant(value=0.0), ) - self.lora_A.is_distributed = True - self.lora_A.split_axis = 0 + # Sync lora_B parameters before training self.lora_B.is_distributed = False - self.scaling = self.lora_alpha / self.r - self.disable_lora = False + if self.sequence_parallel: + mark_as_sequence_parallel_parameter(self.lora_B) - def forward(self, x: paddle.Tensor): - if not self.input_is_parallel: - input_mp = mp_ops._c_split(x, group=self.model_parallel_group) + def forward(self, x): + if self.input_is_parallel: + input_parallel = x else: - input_mp = x - - output = super().forward(x) - - # x @ W : [bz, in_f / ws] ===> [bz, out_f] - with paddle.amp.auto_cast(enable=False): - result_mp = weight_only_linear(input_mp, self.quant_weight, None, self.quant_scale, self.quant_dtype) + input_parallel = mp_ops._c_split(x, group=self.model_parallel_group) - output = mp_ops._mp_allreduce( - result_mp, - group=self.model_parallel_group, - use_calc_stream=True, - use_model_parallel=True, - ) - if not self.disable_lora: - # x @ A: [bz, in_f/ ws] ===> [bz, r] - input_mp = self.lora_dropout(input_mp) @ self.lora_A - # all reduce to keep Lora B's gradient on different gpu consistent - input_dup = mp_ops._mp_allreduce( - input_mp, + # base_model forward + output_parallel = super().forward(input_parallel) + if self.sequence_parallel: + output = ReduceScatterOp.apply(output_parallel) + else: + output = mp_ops._mp_allreduce( + output_parallel, group=self.model_parallel_group, use_calc_stream=True, use_model_parallel=True, + skip_c_identity_dynamic=self.mp_skip_c_identity, ) - # @ B: [bz, r] ===> [bz, out_f] - delta_mp = (input_dup @ self.lora_B) * self.scaling - output += delta_mp output = output + self.bias if self.bias is not None else output - return output - - def merge(self): - logger.warning("QuantizationLoRALinear does not support merge()") - def unmerge(self): - logger.warning("QuantizationLoRALinear does not support unmerge()") + # LoRA forward + if not self.disable_lora: + input_a_parallel = self.lora_dropout(input_parallel) @ self.lora_A + if self.sequence_parallel: + input_a_parallel = ReduceScatterOp.apply(input_a_parallel) + else: + input_a_parallel = mp_ops._mp_allreduce( + input_a_parallel, + group=self.model_parallel_group, + use_calc_stream=True, + use_model_parallel=True, + skip_c_identity_dynamic=self.mp_skip_c_identity, + ) + delta = (input_a_parallel @ self.lora_B) * self.scaling + output += delta + return output diff --git a/paddlenlp/quantization/quantization_linear.py b/paddlenlp/quantization/quantization_linear.py index f4c75f2399fc..b4de8a70fbfd 100644 --- a/paddlenlp/quantization/quantization_linear.py +++ b/paddlenlp/quantization/quantization_linear.py @@ -23,6 +23,10 @@ from .quantization_utils import quant_weight_linear +try: + from .qlora import qlora_weight_linear +except: + qlora_weight_linear = None QuantMapping = { # (quant_dtype, quant_weight_bit) "weight_only_int8": ("int8", 8), From 1853267cddf1187a73781942300815fa7c3401b3 Mon Sep 17 00:00:00 2001 From: lugimzzz <zhenglujing@baidu.com> Date: Sat, 12 Apr 2025 04:15:23 +0800 Subject: [PATCH 03/12] fix bug --- .../peft/lora/lora_quantization_layers.py | 10 ++-- paddlenlp/quantization/quantization_linear.py | 42 ++++++++++++++++- paddlenlp/quantization/quantization_utils.py | 47 ++----------------- 3 files changed, 49 insertions(+), 50 deletions(-) diff --git a/paddlenlp/peft/lora/lora_quantization_layers.py b/paddlenlp/peft/lora/lora_quantization_layers.py index 5efd0ceb9be4..6d7a66156a3e 100644 --- a/paddlenlp/peft/lora/lora_quantization_layers.py +++ b/paddlenlp/peft/lora/lora_quantization_layers.py @@ -23,13 +23,14 @@ mark_as_sequence_parallel_parameter, ) -from ...quantization.quantization_utils import quant_weight_linear +from ...quantization.quantization_linear import quant_weight_linear from ...utils.log import logger from .utils import rng_ctx class QuantizationLoRABaseLinear(nn.Layer): def __init__(self, layer, lora_config): + super().__init__() # Model parameters self.quantization_config = layer.quantization_config self.weight_quantize_algo = layer.weight_quantize_algo @@ -63,7 +64,7 @@ def __init__(self, layer, lora_config): else: self.lora_dropout = lambda x: x - def forward(self, x): + def forward(self, x, add_bias=True): output = quant_weight_linear( x=x, quant_weight=self.quant_weight, @@ -75,7 +76,7 @@ def forward(self, x): quant_state=(self.qquant_scale, self.double_quant_scale, self.quant_scale_offset) if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) else None, - bias=self.bias, + bias=self.bias if add_bias else None, ) return output @@ -205,6 +206,7 @@ class RowParallelQuantizationLoRALinear(QuantizationLoRABaseLinear): """ def __init__(self, layer, lora_config): + super(RowParallelQuantizationLoRALinear, self).__init__(layer, lora_config) # Parallel parameters self.model_parallel_group = layer.model_parallel_group self.world_size = layer.world_size @@ -245,7 +247,7 @@ def forward(self, x): input_parallel = mp_ops._c_split(x, group=self.model_parallel_group) # base_model forward - output_parallel = super().forward(input_parallel) + output_parallel = super().forward(input_parallel, add_bias=False) if self.sequence_parallel: output = ReduceScatterOp.apply(output_parallel) else: diff --git a/paddlenlp/quantization/quantization_linear.py b/paddlenlp/quantization/quantization_linear.py index b4de8a70fbfd..fc83cb4749f8 100644 --- a/paddlenlp/quantization/quantization_linear.py +++ b/paddlenlp/quantization/quantization_linear.py @@ -20,13 +20,13 @@ AllGatherOp, ReduceScatterOp, ) - -from .quantization_utils import quant_weight_linear +from paddle.nn.quant import llm_int8_linear, weight_only_linear try: from .qlora import qlora_weight_linear except: qlora_weight_linear = None + QuantMapping = { # (quant_dtype, quant_weight_bit) "weight_only_int8": ("int8", 8), @@ -37,6 +37,43 @@ } +def quant_weight_linear( + x, + quant_weight, + quant_dtype, + quantization_config, + weight_quantize_algo, + dtype, + quant_scale=None, + quant_state=None, + bias=None, +): + if weight_quantize_algo in ["weight_only_int8", "weight_only_int4"]: + output = weight_only_linear( + x=x, + weight=quant_weight, + bias=bias, + weight_scale=quant_scale, + weight_dtype=quant_dtype, + group_size=quantization_config.group_size, + ) + elif weight_quantize_algo in ["llm.int8"]: + output = llm_int8_linear(x, quant_weight, bias, quant_scale, quantization_config.llm_int8_threshold) + elif weight_quantize_algo in ["fp4", "nf4"]: + output = qlora_weight_linear( + x=x, + quant_weight=quant_weight, + dtype=dtype, + state=quant_state if quantization_config.qlora_weight_double_quant else quant_scale, + quant_algo=weight_quantize_algo, + double_quant=quantization_config.qlora_weight_double_quant, + block_size=quantization_config.qlora_weight_blocksize, + double_quant_block_size=quantization_config.qlora_weight_double_quant_block_size, + bias=bias, + ) + return output + + class QuantizationLinear(nn.Layer): """Quantization Linear layer.""" @@ -233,6 +270,7 @@ def __init__( def forward(self, x): if self.is_mp: if self.sequence_parallel: + print("self.sequence_parallel", self.sequence_parallel) input_parallel = AllGatherOp.apply(x) else: input_parallel = mp_ops._c_identity( diff --git a/paddlenlp/quantization/quantization_utils.py b/paddlenlp/quantization/quantization_utils.py index 7c9aa937f1f8..a9a66aa9436a 100644 --- a/paddlenlp/quantization/quantization_utils.py +++ b/paddlenlp/quantization/quantization_utils.py @@ -23,12 +23,13 @@ ColumnSequenceParallelLinear, RowSequenceParallelLinear, ) -from paddle.nn.quant import llm_int8_linear, weight_only_linear, weight_quantize +from paddle.nn.quant import weight_quantize try: - from .qlora import qlora_weight_linear + from .qlora import qlora_weight_linear, qlora_weight_quantize except: qlora_weight_linear = None + qlora_weight_quantize = None from ..utils.log import logger from .quantization_linear import ( @@ -37,11 +38,6 @@ RowParallelQuantizationLinear, ) -try: - from .qlora import qlora_weight_quantize -except: - qlora_weight_quantize = None - LINEAR_CLASSES = [ nn.Linear, ColumnParallelLinear, @@ -243,40 +239,3 @@ def update_loaded_state_dict_keys(state_dict, quantization_linear_list, quantiza ) return state_dict - - -def quant_weight_linear( - x, - quant_weight, - quant_dtype, - quantization_config, - weight_quantize_algo, - dtype, - quant_scale=None, - quant_state=None, - bias=None, -): - if weight_quantize_algo in ["weight_only_int8", "weight_only_int4"]: - output = weight_only_linear( - x=x, - weight=quant_weight, - bias=bias, - weight_scale=quant_scale, - weight_dtype=quant_dtype, - group_size=quantization_config.group_size, - ) - elif weight_quantize_algo in ["llm.int8"]: - output = llm_int8_linear(x, quant_weight, bias, quant_scale, quantization_config.llm_int8_threshold) - elif weight_quantize_algo in ["fp4", "nf4"]: - output = qlora_weight_linear( - x=x, - quant_weight=quant_weight, - dtype=dtype, - state=quant_state if quantization_config.qlora_weight_double_quant else quant_scale, - quant_algo=weight_quantize_algo, - double_quant=quantization_config.qlora_weight_double_quant, - block_size=quantization_config.qlora_weight_blocksize, - double_quant_block_size=quantization_config.qlora_weight_double_quant_block_size, - bias=bias, - ) - return output From 4a7f8e6cc99c35ededbf2297a5d9eeb8f5f7cc69 Mon Sep 17 00:00:00 2001 From: lugimzzz <zhenglujing@baidu.com> Date: Sat, 12 Apr 2025 15:32:33 +0800 Subject: [PATCH 04/12] add a8w8linear --- paddlenlp/quantization/quantization_config.py | 14 +++++- paddlenlp/quantization/quantization_linear.py | 44 +++++++++++++++++-- paddlenlp/quantization/quantization_utils.py | 16 ++++--- 3 files changed, 62 insertions(+), 12 deletions(-) diff --git a/paddlenlp/quantization/quantization_config.py b/paddlenlp/quantization/quantization_config.py index 396640a6ab0e..5c68f53b1dc7 100644 --- a/paddlenlp/quantization/quantization_config.py +++ b/paddlenlp/quantization/quantization_config.py @@ -64,7 +64,8 @@ def __init__( if weight_quantize_algo is not None: if isinstance(self.weight_quantize_algo, dict): if any( - algo not in ["weight_only_int8", "weight_only_int4", "llm.int8", "a8w8", "nf4", "fp4"] + algo + not in ["weight_only_int8", "weight_only_int4", "llm.int8", "a8w8", "nf4", "fp4", "a8w8linear"] for algo in weight_quantize_algo ): raise ValueError( @@ -77,6 +78,7 @@ def __init__( "a8w8", "nf4", "fp4", + "a8w8linear", ]: raise ValueError( f"weight_quantize_algo:{weight_quantize_algo} not in supported list ['weight_only_int8', 'weight_only_int4', 'llm.int8', 'a8w8', 'nf4', 'fp4']" @@ -116,7 +118,15 @@ def __init__( def is_weight_quantize(self): if isinstance(self.weight_quantize_algo, dict): return True - elif self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8", "nf4", "fp4", "a8w8"]: + elif self.weight_quantize_algo in [ + "weight_only_int8", + "weight_only_int4", + "llm.int8", + "nf4", + "fp4", + "a8w8", + "a8w8linear", + ]: return True else: return False diff --git a/paddlenlp/quantization/quantization_linear.py b/paddlenlp/quantization/quantization_linear.py index fc83cb4749f8..f5d31e55eb25 100644 --- a/paddlenlp/quantization/quantization_linear.py +++ b/paddlenlp/quantization/quantization_linear.py @@ -34,9 +34,44 @@ "llm.int8": ("int8", 8), "fp4": ("fp4", 4), "nf4": ("nf4", 4), + "a8w8linear": ("int8", 8), } +def quantize_tensorwise(x, qmax=127, qmin=-128): + scale = paddle.max(paddle.abs(x)) / qmax + x_int8 = paddle.clip((x / scale).round(), qmin, qmax).astype("int8") + return x_int8, scale + + +def dequantize_tensorwise(x_int8, scale): + x = x_int8.astype(scale.dtype) * scale + return x + + +def quantize_channelwise(w, qmax=127, qmin=-128): + scale = paddle.max(paddle.abs(w), axis=0, keepdim=True) / qmax # [1, out_dim] + w_int8 = paddle.clip((w / scale).round(), qmin, qmax).astype("int8") + return w_int8.T, scale.squeeze(0) + + +def dequantize_channelwise(w_int8, scale): + w = w_int8.astype(scale.dtype) * scale + return w + + +def a8w8_linear(x, w_int8, w_scale=None, bias=None, dtype=None): + if w_int8.dtype != paddle.int8: + w_int8, w_scale = quantize_channelwise(w_int8) + if dtype is None: + dtype = x.dtype + x_int8, x_scale = quantize_tensorwise(x) + out = paddle.matmul(x_int8, w_int8.T).astype(dtype) * x_scale * w_scale.unsqueeze(0) + if bias is not None: + out += bias + return out + + def quant_weight_linear( x, quant_weight, @@ -71,6 +106,8 @@ def quant_weight_linear( double_quant_block_size=quantization_config.qlora_weight_double_quant_block_size, bias=bias, ) + elif weight_quantize_algo in ["a8w8linear"]: + output = a8w8_linear(x, quant_weight, w_scale=quant_scale, bias=bias, dtype=dtype) return output @@ -96,7 +133,7 @@ def __init__( # PaddlePaddle dosen't support 4bit data type, one 8bit data represents two 4bit data. # paddle.nn.quant.weight_quantize will transpose in_features and out_features. - if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8"]: + if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8", "a8w8linear"]: self.quant_weight = self.create_parameter( shape=[out_features // 2, in_features] if self.quant_weight_bit == 4 else [out_features, in_features], dtype="int8", @@ -228,7 +265,7 @@ def __init__( raise ValueError("Sequence parallel does not support gather_output") # PaddlePaddle dosen't support Int4 data type, one Int8 data represents two Int4 data. - if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8"]: + if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8", "a8w8linear"]: self.quant_weight = self.create_parameter( shape=[self.output_size_per_partition // 2, in_features] if self.quant_dtype == "int4" @@ -270,7 +307,6 @@ def __init__( def forward(self, x): if self.is_mp: if self.sequence_parallel: - print("self.sequence_parallel", self.sequence_parallel) input_parallel = AllGatherOp.apply(x) else: input_parallel = mp_ops._c_identity( @@ -348,7 +384,7 @@ def __init__( # PaddlePaddle dosen't support Int4 data type, one Int8 data represents two Int4 data. # paddle.nn.quant.weight_quantize will transpose in_features and out_features. - if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8"]: + if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8", "a8w8linear"]: self.quant_weight = self.create_parameter( shape=[out_features // 2, self.input_size_per_partition] if self.quant_dtype == "int4" diff --git a/paddlenlp/quantization/quantization_utils.py b/paddlenlp/quantization/quantization_utils.py index a9a66aa9436a..85891462aec2 100644 --- a/paddlenlp/quantization/quantization_utils.py +++ b/paddlenlp/quantization/quantization_utils.py @@ -36,6 +36,7 @@ ColumnParallelQuantizationLinear, QuantizationLinear, RowParallelQuantizationLinear, + quantize_channelwise, ) LINEAR_CLASSES = [ @@ -144,11 +145,14 @@ def convert_to_weight_quantize_state_dict(state_dict, name, quantization_config, if weight_name in state_dict: # gpu weight_quantize will fix in future target_weight = state_dict.pop(weight_name).cast(dtype).cuda() - quant_weight, quant_scale = weight_quantize( - x=target_weight, - algo=weight_quantize_algo, - group_size=quantization_config.group_size, - ) + if weight_quantize_algo in ["a8w8linear"]: + quant_weight, quant_scale = quantize_channelwise(target_weight) + else: + quant_weight, quant_scale = weight_quantize( + x=target_weight, + algo=weight_quantize_algo, + group_size=quantization_config.group_size, + ) state_dict[quant_weight_name] = quant_weight state_dict[quant_scale_name] = quant_scale del target_weight @@ -201,7 +205,7 @@ def convert_to_quantize_state_dict(state_dict, quantization_linear_list, quantiz if weight_quantize_algo is None: continue # Convert state dict - if weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8"]: + if weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8", "a8w8linear"]: convert_to_weight_quantize_state_dict(state_dict, name, quantization_config, dtype, weight_quantize_algo) elif weight_quantize_algo in ["fp4", "nf4"]: convert_to_qlora_state_dict(state_dict, name, quantization_config, dtype, weight_quantize_algo) From 4ed55e47e93328858203f92409df814444cd29f7 Mon Sep 17 00:00:00 2001 From: lugimzzz <zhenglujing@baidu.com> Date: Mon, 14 Apr 2025 11:10:45 +0800 Subject: [PATCH 05/12] add a8w8linear with hadamard --- paddlenlp/quantization/quantization_config.py | 2 + paddlenlp/quantization/quantization_linear.py | 40 +++++++++++++++---- paddlenlp/quantization/quantization_utils.py | 2 +- paddlenlp/utils/infohub.py | 2 +- 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/paddlenlp/quantization/quantization_config.py b/paddlenlp/quantization/quantization_config.py index 5c68f53b1dc7..27bbf864c183 100644 --- a/paddlenlp/quantization/quantization_config.py +++ b/paddlenlp/quantization/quantization_config.py @@ -59,6 +59,7 @@ def __init__( dtype=None, ignore_modules=None, group_size=-1, + apply_hadamard=True, **kwargs, ): if weight_quantize_algo is not None: @@ -114,6 +115,7 @@ def __init__( self.dtype = dtype self.ignore_modules = ignore_modules self.group_size = group_size + self.apply_hadamard = apply_hadamard def is_weight_quantize(self): if isinstance(self.weight_quantize_algo, dict): diff --git a/paddlenlp/quantization/quantization_linear.py b/paddlenlp/quantization/quantization_linear.py index f5d31e55eb25..14b488878d17 100644 --- a/paddlenlp/quantization/quantization_linear.py +++ b/paddlenlp/quantization/quantization_linear.py @@ -22,6 +22,8 @@ ) from paddle.nn.quant import llm_int8_linear, weight_only_linear +from paddlenlp.utils import infohub + try: from .qlora import qlora_weight_linear except: @@ -38,7 +40,15 @@ } -def quantize_tensorwise(x, qmax=127, qmin=-128): +def random_hadamard(n, dtype): + A = paddle.randint(low=0, high=2, shape=[n, n]).astype("float32") * 2 - 1 + Q, _ = paddle.linalg.qr(A) + return Q.astype(dtype) + + +def quantize_tensorwise(x, apply_hadamard=False, qmax=127, qmin=-128): + if apply_hadamard: + x = x @ infohub.hadamard[x.shape[-1]] scale = paddle.max(paddle.abs(x)) / qmax x_int8 = paddle.clip((x / scale).round(), qmin, qmax).astype("int8") return x_int8, scale @@ -49,8 +59,17 @@ def dequantize_tensorwise(x_int8, scale): return x -def quantize_channelwise(w, qmax=127, qmin=-128): - scale = paddle.max(paddle.abs(w), axis=0, keepdim=True) / qmax # [1, out_dim] +def quantize_channelwise(w, apply_hadamard=False, qmax=127, qmin=-128): + if apply_hadamard: + if getattr(infohub, "hadamard") is None: + setattr(infohub, "hadamard", {}) + if w.shape[0] in infohub.hadamard: + hadamard_matrix = infohub.hadamard[w.shape[0]] + else: + hadamard_matrix = random_hadamard(w.shape[0], w.dtype) + infohub.hadamard[w.shape[0]] = hadamard_matrix + w = hadamard_matrix.T @ w + scale = paddle.max(paddle.abs(w), axis=0, keepdim=True) / qmax w_int8 = paddle.clip((w / scale).round(), qmin, qmax).astype("int8") return w_int8.T, scale.squeeze(0) @@ -60,12 +79,12 @@ def dequantize_channelwise(w_int8, scale): return w -def a8w8_linear(x, w_int8, w_scale=None, bias=None, dtype=None): +def a8w8_linear(x, w_int8, w_scale=None, bias=None, dtype=None, apply_hadamard=False): if w_int8.dtype != paddle.int8: - w_int8, w_scale = quantize_channelwise(w_int8) + w_int8, w_scale = quantize_channelwise(w_int8, apply_hadamard) if dtype is None: dtype = x.dtype - x_int8, x_scale = quantize_tensorwise(x) + x_int8, x_scale = quantize_tensorwise(x, apply_hadamard) out = paddle.matmul(x_int8, w_int8.T).astype(dtype) * x_scale * w_scale.unsqueeze(0) if bias is not None: out += bias @@ -107,7 +126,14 @@ def quant_weight_linear( bias=bias, ) elif weight_quantize_algo in ["a8w8linear"]: - output = a8w8_linear(x, quant_weight, w_scale=quant_scale, bias=bias, dtype=dtype) + output = a8w8_linear( + x, + quant_weight, + w_scale=quant_scale, + bias=bias, + dtype=dtype, + apply_hadamard=quantization_config.apply_hadamard, + ) return output diff --git a/paddlenlp/quantization/quantization_utils.py b/paddlenlp/quantization/quantization_utils.py index 85891462aec2..860949232ed3 100644 --- a/paddlenlp/quantization/quantization_utils.py +++ b/paddlenlp/quantization/quantization_utils.py @@ -146,7 +146,7 @@ def convert_to_weight_quantize_state_dict(state_dict, name, quantization_config, # gpu weight_quantize will fix in future target_weight = state_dict.pop(weight_name).cast(dtype).cuda() if weight_quantize_algo in ["a8w8linear"]: - quant_weight, quant_scale = quantize_channelwise(target_weight) + quant_weight, quant_scale = quantize_channelwise(target_weight, quantization_config.apply_hadamard) else: quant_weight, quant_scale = weight_quantize( x=target_weight, diff --git a/paddlenlp/utils/infohub.py b/paddlenlp/utils/infohub.py index c41178ce5821..281ceae2a590 100644 --- a/paddlenlp/utils/infohub.py +++ b/paddlenlp/utils/infohub.py @@ -17,7 +17,7 @@ class InfoHub(dict): def __getattr__(self, key): if key not in self: - raise ValueError(f"`{key}` not in InfoHub.") + return None return self[key] def __setattr__(self, key, value): From f48d60b9bda9aafb3b7974f1e67cce663e4c17af Mon Sep 17 00:00:00 2001 From: lugimzzz <zhenglujing@baidu.com> Date: Mon, 14 Apr 2025 12:06:51 +0800 Subject: [PATCH 06/12] support fused linear --- paddlenlp/quantization/quantization_utils.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/paddlenlp/quantization/quantization_utils.py b/paddlenlp/quantization/quantization_utils.py index 860949232ed3..d6cf2034263d 100644 --- a/paddlenlp/quantization/quantization_utils.py +++ b/paddlenlp/quantization/quantization_utils.py @@ -23,6 +23,7 @@ ColumnSequenceParallelLinear, RowSequenceParallelLinear, ) +from paddle.incubate.nn.layer.fused_linear import FusedLinear from paddle.nn.quant import weight_quantize try: @@ -41,6 +42,7 @@ LINEAR_CLASSES = [ nn.Linear, + FusedLinear, ColumnParallelLinear, RowParallelLinear, ColumnSequenceParallelLinear, @@ -86,6 +88,19 @@ def replace_with_quantization_linear(model, quantization_config, llm_int8_thresh dtype=child._dtype, bias_attr=bias_attr, ) + elif isinstance(child, FusedLinear): + if child.transpose_weight: + out_feature, in_features = child.weight.shape[0], child.weight.shape[1] + else: + in_features, out_feature = child.weight.shape[0], child.weight.shape[1] + quant_linear = QuantizationLinear( + in_features=in_features, + out_features=out_feature, + quantization_config=quantization_config, + weight_quantize_algo=weight_quantize_algo, + dtype=child._dtype, + bias_attr=bias_attr, + ) elif isinstance(child, ColumnParallelLinear): quant_linear = ColumnParallelQuantizationLinear( in_features=child.weight.shape[0], From 90d28457a699fbd3550565145a9e3badf6057a72 Mon Sep 17 00:00:00 2001 From: lugimzzz <zhenglujing@baidu.com> Date: Mon, 14 Apr 2025 19:57:31 +0800 Subject: [PATCH 07/12] support backward --- paddlenlp/quantization/quantization_linear.py | 168 ++++++++++++++++-- 1 file changed, 152 insertions(+), 16 deletions(-) diff --git a/paddlenlp/quantization/quantization_linear.py b/paddlenlp/quantization/quantization_linear.py index 14b488878d17..e3ddd68e1556 100644 --- a/paddlenlp/quantization/quantization_linear.py +++ b/paddlenlp/quantization/quantization_linear.py @@ -14,20 +14,22 @@ import paddle import paddle.nn as nn +from paddle.autograd import PyLayer from paddle.distributed.fleet.base import topology as tp from paddle.distributed.fleet.layers.mpu import mp_ops from paddle.distributed.fleet.utils.sequence_parallel_utils import ( AllGatherOp, ReduceScatterOp, ) -from paddle.nn.quant import llm_int8_linear, weight_only_linear +from paddle.nn.quant import llm_int8_linear, weight_dequantize, weight_only_linear from paddlenlp.utils import infohub try: - from .qlora import qlora_weight_linear + from .qlora import qlora_weight_dequantize, qlora_weight_linear except: qlora_weight_linear = None + qlora_weight_dequantize = None QuantMapping = { # (quant_dtype, quant_weight_bit) @@ -48,14 +50,18 @@ def random_hadamard(n, dtype): def quantize_tensorwise(x, apply_hadamard=False, qmax=127, qmin=-128): if apply_hadamard: - x = x @ infohub.hadamard[x.shape[-1]] - scale = paddle.max(paddle.abs(x)) / qmax - x_int8 = paddle.clip((x / scale).round(), qmin, qmax).astype("int8") + target_x = x @ infohub.hadamard[x.shape[-1]] + else: + target_x = x.clone() + scale = paddle.max(paddle.abs(target_x)) / qmax + x_int8 = paddle.clip((target_x / scale).round(), qmin, qmax).astype("int8") return x_int8, scale -def dequantize_tensorwise(x_int8, scale): +def dequantize_tensorwise(x_int8, scale, apply_hadamard=False): x = x_int8.astype(scale.dtype) * scale + if apply_hadamard: + x = x @ infohub.hadamard[x.shape[-1]].T return x @@ -74,16 +80,18 @@ def quantize_channelwise(w, apply_hadamard=False, qmax=127, qmin=-128): return w_int8.T, scale.squeeze(0) -def dequantize_channelwise(w_int8, scale): - w = w_int8.astype(scale.dtype) * scale +def dequantize_channelwise(w_int8, scale, apply_hadamard=False): + w = w_int8.T.astype(scale.dtype) * scale + if apply_hadamard: + w = infohub.hadamard[w_int8.shape[1]] @ w return w def a8w8_linear(x, w_int8, w_scale=None, bias=None, dtype=None, apply_hadamard=False): - if w_int8.dtype != paddle.int8: - w_int8, w_scale = quantize_channelwise(w_int8, apply_hadamard) - if dtype is None: - dtype = x.dtype + # if w_int8.dtype != paddle.int8: + # w_int8, w_scale = quantize_channelwise(w_int8, apply_hadamard) + # if dtype is None: + # dtype = x.dtype x_int8, x_scale = quantize_tensorwise(x, apply_hadamard) out = paddle.matmul(x_int8, w_int8.T).astype(dtype) * x_scale * w_scale.unsqueeze(0) if bias is not None: @@ -91,16 +99,16 @@ def a8w8_linear(x, w_int8, w_scale=None, bias=None, dtype=None, apply_hadamard=F return out -def quant_weight_linear( +def quant_weight_forward( x, quant_weight, + bias, + quant_scale, + quant_state, quant_dtype, quantization_config, weight_quantize_algo, dtype, - quant_scale=None, - quant_state=None, - bias=None, ): if weight_quantize_algo in ["weight_only_int8", "weight_only_int4"]: output = weight_only_linear( @@ -137,6 +145,134 @@ def quant_weight_linear( return output +def dequant_weight( + quant_weight, + quantization_config, + weight_quantize_algo, + dtype, + quant_scale, + quant_state, + input_shape, +): + if weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8"]: + quant_dequant_weight = weight_dequantize( + x=quant_weight, + scale=quant_scale, + algo=weight_quantize_algo, + out_dtype=dtype, + group_size=quantization_config.group_size, + ) + elif weight_quantize_algo in ["fp4", "nf4"]: + quant_dequant_weight = ( + qlora_weight_dequantize( + quant_weight=quant_weight, + quant_algo=weight_quantize_algo, + state=quant_state if quantization_config.qlora_weight_double_quant else quant_scale, + double_quant=quantization_config.qlora_weight_double_quant, + block_size=quantization_config.qlora_weight_blocksize, + double_quant_block_size=quantization_config.qlora_weight_double_quant_block_size, + ) + .reshape([input_shape[-1], -1]) + .cast(dtype) + ) + elif weight_quantize_algo in ["a8w8linear"]: + quant_dequant_weight = dequantize_channelwise( + quant_weight, quant_scale, apply_hadamard=quantization_config.apply_hadamard + ) + return quant_dequant_weight + + +class QuantizationLinearFunc(PyLayer): + @staticmethod + def forward( + ctx, + x, + quant_weight, + bias, + quant_scale, + quant_state, + quant_dtype, + quantization_config, + weight_quantize_algo, + dtype, + ): + + output = quant_weight_forward( + x=x, + quant_weight=quant_weight, + bias=bias, + quant_scale=quant_scale, + quant_state=quant_state, + quant_dtype=quant_dtype, + quantization_config=quantization_config, + weight_quantize_algo=weight_quantize_algo, + dtype=dtype, + ) + ctx.quant_dtype = quant_dtype + ctx.quantization_config = quantization_config + ctx.weight_quantize_algo = weight_quantize_algo + ctx.dtype = dtype + if ctx.weight_quantize_algo in ["fp4", "nf4"] and ctx.quantization_config.qlora_weight_double_quant: + qquant_scale, double_quant_scale, quant_scale_offset = quant_state + ctx.save_for_backward(x, quant_weight, bias, qquant_scale, double_quant_scale, quant_scale_offset) + else: + ctx.save_for_backward(x, quant_weight, bias, quant_scale) + return output + + @staticmethod + def backward(ctx, grad_output): + if ctx.weight_quantize_algo in ["fp4", "nf4"] and ctx.quantization_config.qlora_weight_double_quant: + x, quant_weight, bias, qquant_scale, double_quant_scale, quant_scale_offset = ctx.saved_tensor() + quant_state = (qquant_scale, double_quant_scale, quant_scale_offset) + quant_scale = None + else: + x, quant_weight, bias, quant_scale = ctx.saved_tensor() + quant_state = None + + qdq_weight = dequant_weight( + quant_weight=quant_weight, + quantization_config=ctx.quantization_config, + weight_quantize_algo=ctx.weight_quantize_algo, + dtype=ctx.dtype, + quant_scale=quant_scale, + quant_state=quant_state, + input_shape=x.shape, + ) + + if not x.stop_gradient: + input_grad = paddle.matmul(grad_output, qdq_weight.T) + else: + input_grad = None + + if not quant_weight.stop_gradient: + weight_grad = paddle.einsum("bsh,bsd->hd", x, grad_output) + else: + weight_grad = None + + if bias is not None and not bias.stop_gradient: + bias_grad = grad_output.sum(axis=[0, 1]) + else: + bias_grad = None + + return input_grad, weight_grad, bias_grad + + +def quant_weight_linear( + x, + quant_weight, + quant_dtype, + quantization_config, + weight_quantize_algo, + dtype, + quant_scale=None, + quant_state=None, + bias=None, +): + return QuantizationLinearFunc.apply( + x, quant_weight, bias, quant_scale, quant_state, quant_dtype, quantization_config, weight_quantize_algo, dtype + ) + + class QuantizationLinear(nn.Layer): """Quantization Linear layer.""" From 78f08ae356a38c0565104b463bd253122a9d6f1a Mon Sep 17 00:00:00 2001 From: lugimzzz <zhenglujing@baidu.com> Date: Tue, 15 Apr 2025 15:15:13 +0800 Subject: [PATCH 08/12] support wint8 --- paddlenlp/peft/lora/lora_layers.py | 6 ++++++ paddlenlp/peft/lora/lora_model.py | 10 +++------- paddlenlp/peft/lora/lora_quantization_layers.py | 6 ++++++ paddlenlp/quantization/quantization_linear.py | 6 ++++++ paddlenlp/quantization/quantization_utils.py | 15 ++++----------- paddlenlp/trainer/trainer.py | 16 ++++++++++------ paddlenlp/transformers/model_utils.py | 9 +++++++-- 7 files changed, 42 insertions(+), 26 deletions(-) diff --git a/paddlenlp/peft/lora/lora_layers.py b/paddlenlp/peft/lora/lora_layers.py index bd3782f3ccc3..bac2582102dd 100644 --- a/paddlenlp/peft/lora/lora_layers.py +++ b/paddlenlp/peft/lora/lora_layers.py @@ -65,6 +65,8 @@ def __init__( pissa: bool = False, lora_use_mixer: bool = False, use_mora: bool = False, + mp_moe: bool = False, + is_distributed: bool = False, **kwargs ): nn.Linear.__init__(self, in_features, out_features, **kwargs) @@ -143,6 +145,10 @@ def __init__( self.weight.stop_gradient = True self._use_quick_lora = use_quick_lora and lora_dropout == 0.0 self.disable_lora = False + if mp_moe or is_distributed: + for p in self.parameters(): + p.is_distributed = is_distributed + p.mp_moe = mp_moe def pissa_init(self, rank): weight = self.weight diff --git a/paddlenlp/peft/lora/lora_model.py b/paddlenlp/peft/lora/lora_model.py index 807b5a845974..d59406dd2e5d 100644 --- a/paddlenlp/peft/lora/lora_model.py +++ b/paddlenlp/peft/lora/lora_model.py @@ -486,14 +486,10 @@ def _find_and_replace_module(self, model, module_name, lora_config): use_quick_lora=lora_config.use_quick_lora, lora_use_mixer=lora_config.lora_use_mixer, use_mora=lora_config.use_mora, + mp_moe=getattr(module.weight, "mp_moe", False), + is_distributed=getattr(module.weight, "is_distributed", False), ) - # Hack for mp group moe, need to find a better solution. - if getattr(module.weight, "mp_moe", False): - lora_module.lora_A.mp_moe = True - lora_module.lora_B.mp_moe = True - lora_module.lora_A.is_distributed = True - lora_module.lora_B.is_distributed = True - if isinstance(module, nn.Conv2D): + elif isinstance(module, nn.Conv2D): lora_module = LoRAConv2D( in_channels=module._in_channels, out_channels=module._out_channels, diff --git a/paddlenlp/peft/lora/lora_quantization_layers.py b/paddlenlp/peft/lora/lora_quantization_layers.py index 6d7a66156a3e..1b6569e46249 100644 --- a/paddlenlp/peft/lora/lora_quantization_layers.py +++ b/paddlenlp/peft/lora/lora_quantization_layers.py @@ -111,6 +111,12 @@ def __init__(self, layer, lora_config): is_bias=False, default_initializer=nn.initializer.Constant(value=0.0), ) + mp_moe = getattr(self.quant_weight, "mp_moe", False) + is_distributed = getattr(self.quant_weight, "is_distributed", False) + if mp_moe or is_distributed: + for p in self.parameters(): + p.is_distributed = is_distributed + p.mp_moe = mp_moe def forward(self, x): result = super().forward(x) diff --git a/paddlenlp/quantization/quantization_linear.py b/paddlenlp/quantization/quantization_linear.py index e3ddd68e1556..f9aea8ca65a3 100644 --- a/paddlenlp/quantization/quantization_linear.py +++ b/paddlenlp/quantization/quantization_linear.py @@ -284,6 +284,8 @@ def __init__( weight_quantize_algo, dtype, bias_attr=None, + mp_moe=False, + is_distributed=False, ): super().__init__() self.in_features = in_features @@ -364,6 +366,10 @@ def __init__( dtype=self._dtype, is_bias=True, ) + if mp_moe or is_distributed: + for p in self.parameters(): + p.is_distributed = is_distributed + p.mp_moe = mp_moe def forward(self, x): output = quant_weight_linear( diff --git a/paddlenlp/quantization/quantization_utils.py b/paddlenlp/quantization/quantization_utils.py index d6cf2034263d..eafb3303a904 100644 --- a/paddlenlp/quantization/quantization_utils.py +++ b/paddlenlp/quantization/quantization_utils.py @@ -79,17 +79,8 @@ def replace_with_quantization_linear(model, quantization_config, llm_int8_thresh *path, last = name.split(".") for attr in path: parent = getattr(parent, attr) - if isinstance(child, nn.Linear): - quant_linear = QuantizationLinear( - in_features=child.weight.shape[0], - out_features=child.weight.shape[1], - quantization_config=quantization_config, - weight_quantize_algo=weight_quantize_algo, - dtype=child._dtype, - bias_attr=bias_attr, - ) - elif isinstance(child, FusedLinear): - if child.transpose_weight: + if isinstance(child, nn.Linear) or isinstance(child, FusedLinear): + if getattr(child.weight, "transpose_weight", False): out_feature, in_features = child.weight.shape[0], child.weight.shape[1] else: in_features, out_feature = child.weight.shape[0], child.weight.shape[1] @@ -100,6 +91,8 @@ def replace_with_quantization_linear(model, quantization_config, llm_int8_thresh weight_quantize_algo=weight_quantize_algo, dtype=child._dtype, bias_attr=bias_attr, + mp_moe=getattr(child.weight, "mp_moe", False), + is_distributed=getattr(child.weight, "is_distributed", False), ) elif isinstance(child, ColumnParallelLinear): quant_linear = ColumnParallelQuantizationLinear( diff --git a/paddlenlp/trainer/trainer.py b/paddlenlp/trainer/trainer.py index 195a750be33e..f3370f6a48dd 100644 --- a/paddlenlp/trainer/trainer.py +++ b/paddlenlp/trainer/trainer.py @@ -83,11 +83,12 @@ init_dataloader_comm_group, ) from ..peft import LoKrModel, LoRAModel, PrefixModelForCausalLM, ReFTModel, VeRAModel +from ..quantization.quantization_linear import ( + ColumnParallelQuantizationLinear, + QuantizationLinear, + RowParallelQuantizationLinear, +) -try: - from ..quantization.quantization_linear import QuantizationLinear -except: - QuantizationLinear = None try: from paddle.distributed.fleet.utils.sequence_parallel_utils import ( register_sequence_parallel_allreduce_hooks, @@ -518,7 +519,8 @@ def _wrap_amp_model(self, args, model): models=model, level=self.args.fp16_opt_level, dtype=self.amp_dtype, - excluded_layers=[QuantizationLinear] + self._decorate_exclude_layers(model), + excluded_layers=[QuantizationLinear, ColumnParallelQuantizationLinear, RowParallelQuantizationLinear] + + self._decorate_exclude_layers(model), ) # for pipeline mode and pure tensor parallel if self.args.pipeline_parallel_degree > 1 or (self.args.tensor_parallel_degree > 1 and self.sharding is None): @@ -2166,6 +2168,7 @@ def _decorate_exclude_layers(self, model: nn.Layer): return exclude_layers def _wrap_model(self, model, training=True): + return model # train/eval could be run multiple-times - if already wrapped, don't re-wrap it again if unwrap_model(model) is not model: @@ -2184,7 +2187,8 @@ def _wrap_model(self, model, training=True): optimizers=self.optimizer, level=self.args.fp16_opt_level, dtype=self.amp_dtype, - excluded_layers=[QuantizationLinear] + self._decorate_exclude_layers(model), + excluded_layers=[QuantizationLinear, ColumnParallelQuantizationLinear, RowParallelQuantizationLinear] + + self._decorate_exclude_layers(model), ) if self.optimizer is None: diff --git a/paddlenlp/transformers/model_utils.py b/paddlenlp/transformers/model_utils.py index 762e64cd2eb4..437281724e68 100644 --- a/paddlenlp/transformers/model_utils.py +++ b/paddlenlp/transformers/model_utils.py @@ -1983,11 +1983,16 @@ def _load_pretrained_model( unexpected_keys = list(set(loaded_keys) - set(expected_keys)) # Optimize for skip unused shard files for supper large model - if sharded_metadata is not None and quantization_linear_list is None: + if sharded_metadata is not None: assert isinstance(resolved_archive_file, list) new_archive_file = [] skip_archive_file = [] - expected_keys_set = set(expected_keys) + if quantization_linear_list is None: + expected_keys_set = set(expected_keys) + else: + origin_expected_keys = [k.replace("quant_weight", "weight") for k in expected_keys] + expected_keys_set = set(expected_keys + origin_expected_keys) + for file in resolved_archive_file: filename = os.path.split(file)[-1] if not expected_keys_set.isdisjoint(set(sharded_metadata["file_map"][filename])): From 923b9c849e17310058f219f222c5c7fe96fe8fbf Mon Sep 17 00:00:00 2001 From: lugimzzz <zhenglujing@baidu.com> Date: Wed, 16 Apr 2025 20:59:57 +0800 Subject: [PATCH 09/12] add a8w8 --- paddlenlp/quantization/qat_utils.py | 139 ++++++++++++++++++ paddlenlp/quantization/quantization_config.py | 15 +- paddlenlp/quantization/quantization_linear.py | 115 +++++---------- paddlenlp/quantization/quantization_utils.py | 12 +- 4 files changed, 200 insertions(+), 81 deletions(-) create mode 100644 paddlenlp/quantization/qat_utils.py diff --git a/paddlenlp/quantization/qat_utils.py b/paddlenlp/quantization/qat_utils.py new file mode 100644 index 000000000000..d077a911c7dc --- /dev/null +++ b/paddlenlp/quantization/qat_utils.py @@ -0,0 +1,139 @@ +# Copyright (c) 2025 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import paddle +from paddle.autograd import PyLayer + +from paddlenlp.utils import infohub + + +def random_hadamard(n, dtype): + A = paddle.randint(low=0, high=2, shape=[n, n]).astype("float32") * 2 - 1 + Q, _ = paddle.linalg.qr(A) + return Q.astype(dtype) + + +def quantize_tensorwise(x, apply_hadamard=False, bit_length=8): + qmax = (1 << (bit_length - 1)) - 1 + qmin = -1 * qmax - 1 + if apply_hadamard: + target_x = x @ infohub.hadamard[x.shape[-1]] + else: + target_x = x.clone() + scale = paddle.max(paddle.abs(target_x)) / qmax + x_int8 = paddle.clip((target_x / scale).round(), qmin, qmax).astype("int8") + return x_int8, scale + + +def dequantize_tensorwise(x_int8, scale, apply_hadamard=False): + x = x_int8.astype(scale.dtype) * scale + if apply_hadamard: + x = x @ infohub.hadamard[x.shape[-1]].T + return x + + +def quantize_channelwise(w, apply_hadamard=False, bit_length=8): + qmax = (1 << (bit_length - 1)) - 1 + qmin = -1 * qmax - 1 + if apply_hadamard: + if getattr(infohub, "hadamard") is None: + setattr(infohub, "hadamard", {}) + if w.shape[0] in infohub.hadamard: + hadamard_matrix = infohub.hadamard[w.shape[0]] + else: + hadamard_matrix = random_hadamard(w.shape[0], w.dtype) + infohub.hadamard[w.shape[0]] = hadamard_matrix + w = hadamard_matrix.T @ w + scale = paddle.max(paddle.abs(w), axis=0, keepdim=True) / qmax + w_int8 = paddle.clip((w / scale).round(), qmin, qmax).astype("int8") + return w_int8.T, scale.squeeze(0) + + +def dequantize_channelwise(w_int8, scale, apply_hadamard=False): + w = w_int8.T.astype(scale.dtype) * scale + if apply_hadamard: + w = infohub.hadamard[w_int8.shape[1]] @ w + return w + + +def a8w8_linear(x, w_int8, w_scale=None, bias=None, dtype=None, apply_hadamard=False): + x_int8, x_scale = quantize_tensorwise(x, apply_hadamard, bit_length=8) + out = paddle.matmul(x_int8, w_int8.T).astype(dtype) * x_scale * w_scale.unsqueeze(0) + if bias is not None: + out += bias + return out + + +class QATFunc(PyLayer): + @staticmethod + def forward( + ctx, + x, + quant_weight, + bias, + quant_scale, + quantization_config, + dtype, + ): + + output = a8w8_linear( + x, + quant_weight, + w_scale=quant_scale, + bias=bias, + dtype=dtype, + apply_hadamard=quantization_config.apply_hadamard, + ) + ctx.quantization_config = quantization_config + ctx.dtype = dtype + ctx.save_for_backward(x, quant_weight, bias, quant_scale) + return output + + @staticmethod + def backward(ctx, grad_output): + x, quant_weight, bias, quant_scale = ctx.saved_tensor() + + if not x.stop_gradient: + print("1") + if ctx.quantization_config.quant_input_grad: + print("grad_output, quant_scale", grad_output.shape, quant_scale.shape) + print("grad_output*quant_scale", grad_output * quant_scale) + x_int8, x_scale = quantize_tensorwise( + grad_output * quant_scale, ctx.quantization_config.apply_hadamard, bit_length=8 + ) + print("x_int8, x_scale", x_int8.shape, x_scale.shape, x_int8.dtype, x_scale.dtype) + input_grad = paddle.matmul(x_int8, quant_weight).astype(ctx.dtype) * x_scale + print(input_grad.dtype, input_grad.shape) + else: + qdq_weight = dequantize_channelwise( + quant_weight, quant_scale, apply_hadamard=ctx.quantization_config.apply_hadamard + ) + input_grad = paddle.matmul(grad_output, qdq_weight.T) + else: + input_grad = None + + if not quant_weight.stop_gradient: + print("2") + weight_grad = paddle.einsum("bsh,bsd->hd", x, grad_output) + else: + weight_grad = None + + if bias is not None and not bias.stop_gradient: + print("3") + bias_grad = grad_output.sum(axis=[0, 1]) + else: + bias_grad = None + print("4") + + return input_grad, weight_grad, bias_grad diff --git a/paddlenlp/quantization/quantization_config.py b/paddlenlp/quantization/quantization_config.py index e91ce367297b..4c0666fcf517 100644 --- a/paddlenlp/quantization/quantization_config.py +++ b/paddlenlp/quantization/quantization_config.py @@ -60,13 +60,23 @@ def __init__( ignore_modules=None, group_size=-1, apply_hadamard=True, + quant_input_grad=True, **kwargs, ): if weight_quantize_algo is not None: if isinstance(weight_quantize_algo, dict): if any( algo - not in ["weight_only_int8", "weight_only_int4", "llm.int8", "a8w8", "nf4", "fp4", "a8w8linear"] + not in [ + "weight_only_int8", + "weight_only_int4", + "llm.int8", + "a8w8", + "nf4", + "fp4", + "a8w8linear", + "a8w4linear", + ] for algo in weight_quantize_algo ): raise ValueError( @@ -80,6 +90,7 @@ def __init__( "nf4", "fp4", "a8w8linear", + "a8w4linear", ]: raise ValueError( f"weight_quantize_algo:{weight_quantize_algo} not in supported list ['weight_only_int8', 'weight_only_int4', 'llm.int8', 'a8w8', 'nf4', 'fp4']" @@ -116,6 +127,7 @@ def __init__( self.ignore_modules = ignore_modules self.group_size = group_size self.apply_hadamard = apply_hadamard + self.quant_input_grad = quant_input_grad def is_weight_quantize(self): if isinstance(self.weight_quantize_algo, dict): @@ -128,6 +140,7 @@ def is_weight_quantize(self): "fp4", "a8w8", "a8w8linear", + "a8w4linear", ]: return True else: diff --git a/paddlenlp/quantization/quantization_linear.py b/paddlenlp/quantization/quantization_linear.py index f9aea8ca65a3..0a6762a0b3ec 100644 --- a/paddlenlp/quantization/quantization_linear.py +++ b/paddlenlp/quantization/quantization_linear.py @@ -23,7 +23,7 @@ ) from paddle.nn.quant import llm_int8_linear, weight_dequantize, weight_only_linear -from paddlenlp.utils import infohub +from .qat_utils import QATFunc try: from .qlora import qlora_weight_dequantize, qlora_weight_linear @@ -39,66 +39,10 @@ "fp4": ("fp4", 4), "nf4": ("nf4", 4), "a8w8linear": ("int8", 8), + "a8w4linear": ("int8", 8), } -def random_hadamard(n, dtype): - A = paddle.randint(low=0, high=2, shape=[n, n]).astype("float32") * 2 - 1 - Q, _ = paddle.linalg.qr(A) - return Q.astype(dtype) - - -def quantize_tensorwise(x, apply_hadamard=False, qmax=127, qmin=-128): - if apply_hadamard: - target_x = x @ infohub.hadamard[x.shape[-1]] - else: - target_x = x.clone() - scale = paddle.max(paddle.abs(target_x)) / qmax - x_int8 = paddle.clip((target_x / scale).round(), qmin, qmax).astype("int8") - return x_int8, scale - - -def dequantize_tensorwise(x_int8, scale, apply_hadamard=False): - x = x_int8.astype(scale.dtype) * scale - if apply_hadamard: - x = x @ infohub.hadamard[x.shape[-1]].T - return x - - -def quantize_channelwise(w, apply_hadamard=False, qmax=127, qmin=-128): - if apply_hadamard: - if getattr(infohub, "hadamard") is None: - setattr(infohub, "hadamard", {}) - if w.shape[0] in infohub.hadamard: - hadamard_matrix = infohub.hadamard[w.shape[0]] - else: - hadamard_matrix = random_hadamard(w.shape[0], w.dtype) - infohub.hadamard[w.shape[0]] = hadamard_matrix - w = hadamard_matrix.T @ w - scale = paddle.max(paddle.abs(w), axis=0, keepdim=True) / qmax - w_int8 = paddle.clip((w / scale).round(), qmin, qmax).astype("int8") - return w_int8.T, scale.squeeze(0) - - -def dequantize_channelwise(w_int8, scale, apply_hadamard=False): - w = w_int8.T.astype(scale.dtype) * scale - if apply_hadamard: - w = infohub.hadamard[w_int8.shape[1]] @ w - return w - - -def a8w8_linear(x, w_int8, w_scale=None, bias=None, dtype=None, apply_hadamard=False): - # if w_int8.dtype != paddle.int8: - # w_int8, w_scale = quantize_channelwise(w_int8, apply_hadamard) - # if dtype is None: - # dtype = x.dtype - x_int8, x_scale = quantize_tensorwise(x, apply_hadamard) - out = paddle.matmul(x_int8, w_int8.T).astype(dtype) * x_scale * w_scale.unsqueeze(0) - if bias is not None: - out += bias - return out - - def quant_weight_forward( x, quant_weight, @@ -133,15 +77,7 @@ def quant_weight_forward( double_quant_block_size=quantization_config.qlora_weight_double_quant_block_size, bias=bias, ) - elif weight_quantize_algo in ["a8w8linear"]: - output = a8w8_linear( - x, - quant_weight, - w_scale=quant_scale, - bias=bias, - dtype=dtype, - apply_hadamard=quantization_config.apply_hadamard, - ) + return output @@ -175,10 +111,6 @@ def dequant_weight( .reshape([input_shape[-1], -1]) .cast(dtype) ) - elif weight_quantize_algo in ["a8w8linear"]: - quant_dequant_weight = dequantize_channelwise( - quant_weight, quant_scale, apply_hadamard=quantization_config.apply_hadamard - ) return quant_dequant_weight @@ -268,9 +200,20 @@ def quant_weight_linear( quant_state=None, bias=None, ): - return QuantizationLinearFunc.apply( - x, quant_weight, bias, quant_scale, quant_state, quant_dtype, quantization_config, weight_quantize_algo, dtype - ) + if weight_quantize_algo in ["a8w8linear", "a8w4linear"]: + return QATFunc.apply(x, quant_weight, bias, quant_scale, quantization_config, dtype) + else: + return QuantizationLinearFunc.apply( + x, + quant_weight, + bias, + quant_scale, + quant_state, + quant_dtype, + quantization_config, + weight_quantize_algo, + dtype, + ) class QuantizationLinear(nn.Layer): @@ -297,7 +240,13 @@ def __init__( # PaddlePaddle dosen't support 4bit data type, one 8bit data represents two 4bit data. # paddle.nn.quant.weight_quantize will transpose in_features and out_features. - if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8", "a8w8linear"]: + if self.weight_quantize_algo in [ + "weight_only_int8", + "weight_only_int4", + "llm.int8", + "a8w8linear", + "a8w4linear", + ]: self.quant_weight = self.create_parameter( shape=[out_features // 2, in_features] if self.quant_weight_bit == 4 else [out_features, in_features], dtype="int8", @@ -433,7 +382,13 @@ def __init__( raise ValueError("Sequence parallel does not support gather_output") # PaddlePaddle dosen't support Int4 data type, one Int8 data represents two Int4 data. - if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8", "a8w8linear"]: + if self.weight_quantize_algo in [ + "weight_only_int8", + "weight_only_int4", + "llm.int8", + "a8w8linear", + "a8w4linear", + ]: self.quant_weight = self.create_parameter( shape=[self.output_size_per_partition // 2, in_features] if self.quant_dtype == "int4" @@ -552,7 +507,13 @@ def __init__( # PaddlePaddle dosen't support Int4 data type, one Int8 data represents two Int4 data. # paddle.nn.quant.weight_quantize will transpose in_features and out_features. - if self.weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8", "a8w8linear"]: + if self.weight_quantize_algo in [ + "weight_only_int8", + "weight_only_int4", + "llm.int8", + "a8w8linear", + "a8w4linear", + ]: self.quant_weight = self.create_parameter( shape=[out_features // 2, self.input_size_per_partition] if self.quant_dtype == "int4" diff --git a/paddlenlp/quantization/quantization_utils.py b/paddlenlp/quantization/quantization_utils.py index eafb3303a904..8ba8467d7884 100644 --- a/paddlenlp/quantization/quantization_utils.py +++ b/paddlenlp/quantization/quantization_utils.py @@ -33,11 +33,11 @@ qlora_weight_quantize = None from ..utils.log import logger +from .qat_utils import quantize_channelwise from .quantization_linear import ( ColumnParallelQuantizationLinear, QuantizationLinear, RowParallelQuantizationLinear, - quantize_channelwise, ) LINEAR_CLASSES = [ @@ -154,7 +154,13 @@ def convert_to_weight_quantize_state_dict(state_dict, name, quantization_config, # gpu weight_quantize will fix in future target_weight = state_dict.pop(weight_name).cast(dtype).cuda() if weight_quantize_algo in ["a8w8linear"]: - quant_weight, quant_scale = quantize_channelwise(target_weight, quantization_config.apply_hadamard) + quant_weight, quant_scale = quantize_channelwise( + target_weight, quantization_config.apply_hadamard, bit_length=8 + ) + elif weight_quantize_algo in ["a8w4linear"]: + quant_weight, quant_scale = quantize_channelwise( + target_weight, quantization_config.apply_hadamard, bit_length=4 + ) else: quant_weight, quant_scale = weight_quantize( x=target_weight, @@ -213,7 +219,7 @@ def convert_to_quantize_state_dict(state_dict, quantization_linear_list, quantiz if weight_quantize_algo is None: continue # Convert state dict - if weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8", "a8w8linear"]: + if weight_quantize_algo in ["weight_only_int8", "weight_only_int4", "llm.int8", "a8w8linear", "a8w4linear"]: convert_to_weight_quantize_state_dict(state_dict, name, quantization_config, dtype, weight_quantize_algo) elif weight_quantize_algo in ["fp4", "nf4"]: convert_to_qlora_state_dict(state_dict, name, quantization_config, dtype, weight_quantize_algo) From fffc785babc64638d9f3e695fff429b3f348aa5a Mon Sep 17 00:00:00 2001 From: lugimzzz <zhenglujing@baidu.com> Date: Fri, 18 Apr 2025 14:07:07 +0800 Subject: [PATCH 10/12] add a8w8 --- paddlenlp/quantization/hadamard_utils.py | 97084 ++++++++++++++++ paddlenlp/quantization/qat_utils.py | 79 +- paddlenlp/quantization/quantization_config.py | 4 +- paddlenlp/quantization/quantization_linear.py | 37 +- paddlenlp/quantization/quantization_utils.py | 4 + paddlenlp/trainer/trainer.py | 52 +- paddlenlp/trainer/trainer_utils.py | 1 + paddlenlp/utils/optimizer.py | 159 +- 8 files changed, 97362 insertions(+), 58 deletions(-) create mode 100644 paddlenlp/quantization/hadamard_utils.py diff --git a/paddlenlp/quantization/hadamard_utils.py b/paddlenlp/quantization/hadamard_utils.py new file mode 100644 index 000000000000..1bb3459a84f3 --- /dev/null +++ b/paddlenlp/quantization/hadamard_utils.py @@ -0,0 +1,97084 @@ +# Copyright (c) 2025 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import paddle + +# Adapted from https://github.com/Cornell-RelaxML/quip-sharp/blob/main/lib/utils/matmul_had.py + + +def get_hadK(n, transpose=False): + """ + 获取一个矩阵,该矩阵是用于哈达纳变换的基础矩阵。 + 如果矩阵大小为2^k,则返回一个基础矩阵,否则返回None。 + 如果transpose参数为True,则返回基础矩阵的转置形式。 + + Args: + n (int): 矩阵大小,必须是2的幂或者能被以下任意值整除:172, 156, 140, 108, 60, 52, 36, 28, 40, 20, 12。 + transpose (bool, optional): 默认为False,表示返回基础矩阵本身。如果为True,则返回基础矩阵的转置形式。 Default: False. + + Returns: + tuple (ndarray, int): 第一个元素是一个ndarray类型的矩阵,代表基础矩阵;第二个元素是一个整数,代表基础矩阵的大小(即矩阵大小/基础矩阵大小)。如果不存在基础矩阵,则返回(None, None)。 + """ + hadK, K = None, None + if n % 172 == 0: # llama-2-7b up + assert is_pow2(n // 172) + K = 172 + hadK = get_had172().T if transpose else get_had172() + elif n % 156 == 0: # llama-1-30b 3x hidden + assert is_pow2(n // 156) + K = 156 + hadK = get_had156().T if transpose else get_had156() + elif n % 140 == 0: # llama-1-30b intermediate + assert is_pow2(n // 140) + K = 140 + hadK = get_had140().T if transpose else get_had140() + elif n % 108 == 0: # llama-1-13b intermediate + assert is_pow2(n // 108) + K = 108 + hadK = get_had108().T if transpose else get_had108() + elif n % 60 == 0: # llama-1-13b 3x hidden + assert is_pow2(n // 60) + K = 60 + hadK = get_had60().T if transpose else get_had60() + elif n % 52 == 0: # llama-1-13b 1x hidden + assert is_pow2(n // 52) + K = 52 + hadK = get_had52().T if transpose else get_had52() + elif n % 36 == 0: + assert is_pow2(n // 36) + K = 36 + hadK = get_had36().T if transpose else get_had36() + elif n % 28 == 0: # llama-3 up + assert is_pow2(n // 28) + K = 28 + hadK = get_had28().T if transpose else get_had28() + elif n % 40 == 0: + assert is_pow2(n // 40) + K = 40 + hadK = get_had40().T if transpose else get_had40() + elif n % 20 == 0: + assert is_pow2(n // 20) + K = 20 + hadK = get_had20().T if transpose else get_had20() + elif n % 12 == 0: + assert is_pow2(n // 12) + K = 12 + hadK = get_had12().T if transpose else get_had12() + else: + assert is_pow2(n) + K = 1 + + if hadK is not None: + hadK = hadK.cast("float32") + return hadK, K + + +def matmul_hadU(X, transpose=False): + """ + hadamard变换。 + + 如果需要转置输入矩阵,则可以指定transpose参数为True。 + + Args: + X (Tensor, numpy.ndarray): 形状为(..., m, n)的矩阵,其中m和n分别是行数和列数。 + Tensor类型的矩阵支持任何浮点数类型,numpy.ndarray类型的矩阵只支持浮点数类型。 + transpose (bool, optional): 默认值为False,表示不进行转置操作。如果设为True,则会将输入矩阵转置后再进行计算。 + 默认值:False. + + Returns: + Tensor: 形状为(..., m, n)的矩阵,其中m和n分别是行数和列数,结果矩阵的每个元素是输入矩阵的对应位置元素与另一个矩阵的对应位置元素的乘积。 + 返回的Tensor类型的矩阵支持任何浮点数类型,numpy.ndarray类型的矩阵只支持浮点数类型。 + """ + n = X.shape[-1] + hadK, K = get_hadK(n, transpose) + input = X.clone().reshape((-1, n, 1)) + output = input.clone() + while input.shape[1] > K: + input = input.reshape((input.shape[0], input.shape[1] // 2, 2, input.shape[2])) + output = output.reshape(input.shape) + output[:, :, 0, :] = input[:, :, 0, :] + input[:, :, 1, :] + output[:, :, 1, :] = input[:, :, 0, :] - input[:, :, 1, :] + output = output.reshape((input.shape[0], input.shape[1], -1)) + (input, output) = (output, input) + del output + + if K > 1: + input = hadK.reshape((1, K, K)).to(input) @ input + + # return input.reshape(X.shape) / paddle.to_tensor(n, dtype='float32').sqrt() + return input.reshape(X.shape) + + +def random_hadamard_matrix(size, dtype, is_block=False): + # See https://cornell-relaxml.github.io/quip-sharp/ , Section "Randomized Hadamard Transformation" + if not is_block: + A = paddle.randint(low=0, high=2, shape=[size, size]).astype("float32") * 2 - 1 + Q, _ = paddle.linalg.qr(A) + return Q.astype(dtype), 1 + else: + num_blocks = size + while not (num_blocks % 2): + num_blocks = num_blocks // 2 + block_size = size // num_blocks + Q = paddle.diag(paddle.ones((block_size,), dtype="float32")) + block = matmul_hadU(Q) + large_matrix = paddle.zeros([size, size]) + + for i in range(num_blocks): + start_row = i * block_size + start_col = i * block_size + large_matrix[start_row : start_row + block_size, start_col : start_col + block_size] = block + return large_matrix.cast(dtype), block_size + + +def is_pow2(n): + """ + 判断一个数是否为2的幂次方。 + 参数(必需): + n (int) - 要检查的整数。 + 返回值(bool): + True,如果n是2的幂次方;False,如果不是。 + """ + return (n & (n - 1) == 0) and (n > 0) + + +# hadamard matrices for had12, had36.pal2, had52,will, +# # had60.pal, had108.pal, had140.pal, had156.will, had172.will: +# http://www.neilsloane.com/hadamard/index.html +def get_had12(): + """ + 获取HAD12矩阵,返回一个PaddleTensor对象。 + 该矩阵用于计算Hadamard乘法,其中每个元素的值为1或-1。 + + Returns: + paddle.Tensor (float32) – 大小为(12, 12)的二维矩阵,每个元素的值为1或-1。 + """ + return paddle.to_tensor( + [ + [+1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], + [+1, +1, -1, +1, -1, -1, -1, +1, +1, +1, -1, +1], + [+1, +1, +1, -1, +1, -1, -1, -1, +1, +1, +1, -1], + [+1, -1, +1, +1, -1, +1, -1, -1, -1, +1, +1, +1], + [+1, +1, -1, +1, +1, -1, +1, -1, -1, -1, +1, +1], + [+1, +1, +1, -1, +1, +1, -1, +1, -1, -1, -1, +1], + [+1, +1, +1, +1, -1, +1, +1, -1, +1, -1, -1, -1], + [+1, -1, +1, +1, +1, -1, +1, +1, -1, +1, -1, -1], + [+1, -1, -1, +1, +1, +1, -1, +1, +1, -1, +1, -1], + [+1, -1, -1, -1, +1, +1, +1, -1, +1, +1, -1, +1], + [+1, +1, -1, -1, -1, +1, +1, +1, -1, +1, +1, -1], + [+1, -1, +1, -1, -1, -1, +1, +1, +1, -1, +1, +1], + ] + ) + + +def get_had40(): + """ + 获取HAD40矩阵,元素类型为float32。 + + Returns: + Tensor (paddle.Tensor): HAD40矩阵,元素类型为float32。 + """ + return paddle.to_tensor( + [ + [ + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + ] + ) + + +def get_had20(): + """ + 获取size为20的Hadamard矩阵。 + + Returns: + Tensor (float32) – 大小为(20, 20)的hadamard矩阵。 + """ + return paddle.to_tensor( + [ + [+1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], + [+1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1], + [+1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1], + [+1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1], + [+1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1], + [+1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1], + [+1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1], + [+1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1], + [+1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1], + [+1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1], + [+1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1], + [+1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1], + [+1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1], + [+1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1], + [+1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1], + [+1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1], + [+1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1], + [+1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1], + [+1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1], + [+1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1], + ] + ) + + +def get_had28(): + """ + 获取size为28的hadamard矩阵。 + + Returns: + Tensor (float32): 形状为(28, 28),每个元素的值为+1或-1。 + """ + return paddle.to_tensor( + [ + [ + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + ], + ] + ) + + +def get_had36(): + """ + 获取size为36的hadamard矩阵。 + + Returns: + Tensor (float32): 形状为(36, 36),每个元素的值为+1或-1。 + """ + return paddle.to_tensor( + [ + [ + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + ], + ] + ) + + +def get_had60(): + """ + 获取size为60的hadamard矩阵。 + + Returns: + Tensor (float32): 形状为(60, 60),每个元素的值为+1或-1。 + """ + return paddle.to_tensor( + [ + [ + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + ], + ] + ) + + +def get_had52(): + """ + 获取size为52的hadamard矩阵。 + + Returns: + Tensor (float32): 形状为(52, 52),每个元素的值为+1或-1。 + """ + return paddle.to_tensor( + [ + [ + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + ], + [ + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + ], + [ + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + ], + [ + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + ], + [ + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + ], + [ + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + ], + [ + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + ], + [ + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + ], + [ + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + ], + [ + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + ], + [ + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + ], + [ + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + ], + [ + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + ], + ] + ) + + +def get_had108(): + """ + 获取size为108的hadamard矩阵。 + + Returns: + Tensor (float32): 形状为(108, 108),每个元素的值为+1或-1。 + """ + return paddle.to_tensor( + [ + [ + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + ], + ] + ) + + +def get_had140(): + """ + 获取size为140的hadamard矩阵。 + + Returns: + Tensor (float32): 形状为(140, 140),每个元素的值为+1或-1。 + """ + return paddle.to_tensor( + [ + [ + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + ] + ) + + +def get_had156(): + """ + 获取size为156的hadamard矩阵。 + + Returns: + Tensor (float32): 形状为(156, 156),每个元素的值为+1或-1。 + """ + return paddle.to_tensor( + [ + [ + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + ], + [ + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + ], + [ + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + ], + [ + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + ], + [ + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + ], + [ + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + ], + [ + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + ], + [ + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + ], + [ + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + ], + [ + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + ], + [ + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + ], + [ + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + ], + [ + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + ], + [ + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + ], + [ + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + ], + [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + ], + [ + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + ], + [ + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + ], + [ + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + ], + [ + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + ], + [ + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + [ + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + ], + [ + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + ], + [ + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + ], + [ + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + ], + [ + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + ], + [ + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + ], + [ + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + [ + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + ], + [ + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + ], + [ + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + ], + [ + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + ], + [ + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + ] + ) + + +def get_had172(): + """ + 获取size为172的hadamard矩阵。 + + Returns: + Tensor (float32): 形状为(172, 172),每个元素的值为+1或-1。 + """ + return paddle.to_tensor( + [ + [ + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + ], + [ + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + ], + [ + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + ], + [ + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + ], + [ + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + ], + [ + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + ], + [ + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + ], + [ + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + ], + [ + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + ], + [ + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + ], + [ + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + ], + [ + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + ], + [ + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + ], + [ + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + ], + [ + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + ], + [ + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + ], + [ + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + ], + [ + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + ], + [ + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + ], + [ + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + ], + [ + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + ], + [ + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + ], + [ + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + ], + [ + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + ], + [ + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + ], + [ + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + ], + [ + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + ], + [ + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + ], + [ + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + ], + [ + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + ], + [ + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + ], + [ + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + ], + [ + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + ], + [ + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + ], + [ + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + ], + [ + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + ], + [ + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + ], + [ + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + ], + [ + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + ], + [ + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + ], + [ + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + ], + [ + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + ], + [ + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + ], + [ + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + ], + [ + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + ], + [ + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + ], + [ + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + ], + [ + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + ], + [ + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + ], + [ + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + ], + [ + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + ], + [ + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + ], + [ + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + ], + [ + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + ], + [ + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + ], + [ + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + ], + [ + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + ], + [ + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + ], + [ + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + ], + [ + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + ], + [ + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + ], + [ + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + ], + [ + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + +1, + ], + [ + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + +1, + ], + [ + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + -1, + ], + [ + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + -1, + ], + [ + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + -1, + ], + [ + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + -1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + -1, + +1, + -1, + -1, + -1, + -1, + +1, + +1, + +1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + +1, + +1, + +1, + -1, + +1, + -1, + +1, + +1, + +1, + +1, + -1, + -1, + +1, + +1, + -1, + -1, + -1, + +1, + ], + ] + ) diff --git a/paddlenlp/quantization/qat_utils.py b/paddlenlp/quantization/qat_utils.py index d077a911c7dc..e70d6406c5b9 100644 --- a/paddlenlp/quantization/qat_utils.py +++ b/paddlenlp/quantization/qat_utils.py @@ -17,21 +17,28 @@ from paddlenlp.utils import infohub +from .hadamard_utils import random_hadamard_matrix -def random_hadamard(n, dtype): - A = paddle.randint(low=0, high=2, shape=[n, n]).astype("float32") * 2 - 1 - Q, _ = paddle.linalg.qr(A) - return Q.astype(dtype) - -def quantize_tensorwise(x, apply_hadamard=False, bit_length=8): +def quantize_tensorwise(x, quantization_config=None, bit_length=8, state=0, training=False, act_scale=None): qmax = (1 << (bit_length - 1)) - 1 qmin = -1 * qmax - 1 - if apply_hadamard: - target_x = x @ infohub.hadamard[x.shape[-1]] + if quantization_config.apply_hadamard: + target_x = x @ infohub.hadamard[x.shape[-1]][0] else: target_x = x.clone() - scale = paddle.max(paddle.abs(target_x)) / qmax + + if act_scale is not None: + if training: + scale = paddle.max(paddle.abs(target_x)) / qmax + act_scale[:] = (state * act_scale + scale) / (state + 1) + if state > quantization_config.skip_first_act_scale_step: + scale = act_scale + else: + scale = act_scale + else: + scale = paddle.max(paddle.abs(target_x)) / qmax + x_int8 = paddle.clip((target_x / scale).round(), qmin, qmax).astype("int8") return x_int8, scale @@ -39,7 +46,7 @@ def quantize_tensorwise(x, apply_hadamard=False, bit_length=8): def dequantize_tensorwise(x_int8, scale, apply_hadamard=False): x = x_int8.astype(scale.dtype) * scale if apply_hadamard: - x = x @ infohub.hadamard[x.shape[-1]].T + x = x @ infohub.hadamard[x.shape[-1]][0].T return x @@ -50,26 +57,32 @@ def quantize_channelwise(w, apply_hadamard=False, bit_length=8): if getattr(infohub, "hadamard") is None: setattr(infohub, "hadamard", {}) if w.shape[0] in infohub.hadamard: - hadamard_matrix = infohub.hadamard[w.shape[0]] + hadamard_matrix, block_size = infohub.hadamard[w.shape[0]] else: - hadamard_matrix = random_hadamard(w.shape[0], w.dtype) - infohub.hadamard[w.shape[0]] = hadamard_matrix + hadamard_matrix, block_size = random_hadamard_matrix(w.shape[0], w.dtype, is_block=True) + infohub.hadamard[w.shape[0]] = (hadamard_matrix, block_size) w = hadamard_matrix.T @ w + else: + block_size = 1 scale = paddle.max(paddle.abs(w), axis=0, keepdim=True) / qmax w_int8 = paddle.clip((w / scale).round(), qmin, qmax).astype("int8") - return w_int8.T, scale.squeeze(0) + return w_int8.T, scale.squeeze(0) / block_size def dequantize_channelwise(w_int8, scale, apply_hadamard=False): w = w_int8.T.astype(scale.dtype) * scale if apply_hadamard: - w = infohub.hadamard[w_int8.shape[1]] @ w + w = infohub.hadamard[w_int8.shape[1]][0] @ w return w -def a8w8_linear(x, w_int8, w_scale=None, bias=None, dtype=None, apply_hadamard=False): - x_int8, x_scale = quantize_tensorwise(x, apply_hadamard, bit_length=8) - out = paddle.matmul(x_int8, w_int8.T).astype(dtype) * x_scale * w_scale.unsqueeze(0) +def a8w8_linear( + x, w_int8, w_scale=None, bias=None, dtype=None, quantization_config=None, state=0, training=False, act_scale=None +): + x_int8, x_scale = quantize_tensorwise( + x, quantization_config, bit_length=8, state=state, training=training, act_scale=act_scale + ) + out = paddle.matmul(x_int8, w_int8.T).astype(dtype) * (x_scale * w_scale.unsqueeze(0)) if bias is not None: out += bias return out @@ -85,15 +98,20 @@ def forward( quant_scale, quantization_config, dtype, + state, + training, + act_scale, ): - output = a8w8_linear( x, quant_weight, w_scale=quant_scale, bias=bias, dtype=dtype, - apply_hadamard=quantization_config.apply_hadamard, + quantization_config=quantization_config, + state=state, + training=training, + act_scale=act_scale, ) ctx.quantization_config = quantization_config ctx.dtype = dtype @@ -105,16 +123,13 @@ def backward(ctx, grad_output): x, quant_weight, bias, quant_scale = ctx.saved_tensor() if not x.stop_gradient: - print("1") if ctx.quantization_config.quant_input_grad: - print("grad_output, quant_scale", grad_output.shape, quant_scale.shape) - print("grad_output*quant_scale", grad_output * quant_scale) - x_int8, x_scale = quantize_tensorwise( - grad_output * quant_scale, ctx.quantization_config.apply_hadamard, bit_length=8 + x_int8, x_scale = quantize_tensorwise(grad_output * quant_scale) + input_grad = ( + paddle.matmul(x_int8, quant_weight).astype(ctx.dtype) + @ infohub.hadamard[quant_weight.shape[-1]][0].T + * x_scale ) - print("x_int8, x_scale", x_int8.shape, x_scale.shape, x_int8.dtype, x_scale.dtype) - input_grad = paddle.matmul(x_int8, quant_weight).astype(ctx.dtype) * x_scale - print(input_grad.dtype, input_grad.shape) else: qdq_weight = dequantize_channelwise( quant_weight, quant_scale, apply_hadamard=ctx.quantization_config.apply_hadamard @@ -124,16 +139,16 @@ def backward(ctx, grad_output): input_grad = None if not quant_weight.stop_gradient: - print("2") - weight_grad = paddle.einsum("bsh,bsd->hd", x, grad_output) + if len(x.shape) == 2: + weight_grad = paddle.einsum("sh,sd->hd", x, grad_output) + else: + weight_grad = paddle.einsum("bsh,bsd->hd", x, grad_output) else: weight_grad = None if bias is not None and not bias.stop_gradient: - print("3") bias_grad = grad_output.sum(axis=[0, 1]) else: bias_grad = None - print("4") return input_grad, weight_grad, bias_grad diff --git a/paddlenlp/quantization/quantization_config.py b/paddlenlp/quantization/quantization_config.py index 4c0666fcf517..e945b969eea1 100644 --- a/paddlenlp/quantization/quantization_config.py +++ b/paddlenlp/quantization/quantization_config.py @@ -60,7 +60,8 @@ def __init__( ignore_modules=None, group_size=-1, apply_hadamard=True, - quant_input_grad=True, + quant_input_grad=False, + skip_first_act_scale_step=-1, **kwargs, ): if weight_quantize_algo is not None: @@ -128,6 +129,7 @@ def __init__( self.group_size = group_size self.apply_hadamard = apply_hadamard self.quant_input_grad = quant_input_grad + self.skip_first_act_scale_step = skip_first_act_scale_step def is_weight_quantize(self): if isinstance(self.weight_quantize_algo, dict): diff --git a/paddlenlp/quantization/quantization_linear.py b/paddlenlp/quantization/quantization_linear.py index 0a6762a0b3ec..7324848b11b6 100644 --- a/paddlenlp/quantization/quantization_linear.py +++ b/paddlenlp/quantization/quantization_linear.py @@ -199,9 +199,14 @@ def quant_weight_linear( quant_scale=None, quant_state=None, bias=None, + act_state=None, ): if weight_quantize_algo in ["a8w8linear", "a8w4linear"]: - return QATFunc.apply(x, quant_weight, bias, quant_scale, quantization_config, dtype) + state, training, act_scale = act_state + + return QATFunc.apply( + x, quant_weight, bias, quant_scale, quantization_config, dtype, state, training, act_scale + ) else: return QuantizationLinearFunc.apply( x, @@ -237,6 +242,7 @@ def __init__( self.weight_quantize_algo = weight_quantize_algo self._dtype = dtype self.quant_dtype, self.quant_weight_bit = QuantMapping[self.weight_quantize_algo] + self.state = 0 # PaddlePaddle dosen't support 4bit data type, one 8bit data represents two 4bit data. # paddle.nn.quant.weight_quantize will transpose in_features and out_features. @@ -261,6 +267,12 @@ def __init__( else: # TODO(lugimzzz): support groupwise in next PR raise NotImplementedError("Not yet support grouwise weightonly quantization.") + if self.weight_quantize_algo in ["a8w8linear", "a8w4linear"]: + self.act_scale = self.create_parameter( + shape=[1], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.Constant(value=0.0) + ) + self.act_scale.stop_gradient = True + elif self.weight_quantize_algo in ["fp4", "nf4"]: if qlora_weight_linear is None: raise ImportError( @@ -333,7 +345,12 @@ def forward(self, x): if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) else None, bias=self.bias, + act_state=(self.state, self.training, self.act_scale) + if self.weight_quantize_algo in ["a8w8linear", "a8w4linear"] + else None, ) + if self.training: + self.state += 1 return output @@ -368,7 +385,7 @@ def __init__( self._dtype = dtype self.mp_skip_c_identity = mp_skip_c_identity self.quant_dtype, self.quant_weight_bit = QuantMapping[self.weight_quantize_algo] - + self.state = 0 self.model_parallel_group = ( tp._HYBRID_PARALLEL_GROUP.get_model_parallel_group() if mp_group is None else mp_group ) @@ -412,6 +429,10 @@ def __init__( else: # TODO(lugimzzz): support groupwise in next PR raise NotImplementedError("Not yet support grouwise weightonly quantization.") + if self.weight_quantize_algo in ["a8w8linear", "a8w4linear"]: + self.act_scale = self.create_parameter( + shape=[1], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.Constant(value=0.0) + ) else: raise NotImplementedError(f"Not yet support weight_quantize_algo: {self.weight_quantize_algo}") if bias_attr is False: @@ -452,7 +473,10 @@ def forward(self, x): if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) else None, bias=self.bias, + state=self.state, ) + if self.training: + self.state += 1 if self.gather_output and self.is_mp: output = mp_ops._c_concat(output_parallel, group=self.model_parallel_group) @@ -492,6 +516,7 @@ def __init__( self._dtype = dtype self.mp_skip_c_identity = mp_skip_c_identity self.quant_dtype, self.quant_weight_bit = QuantMapping[self.weight_quantize_algo] + self.state = 0 self.model_parallel_group = ( tp._HYBRID_PARALLEL_GROUP.get_model_parallel_group() if mp_group is None else mp_group @@ -537,6 +562,10 @@ def __init__( else: # TODO(lugimzzz): support groupwise in next PR raise NotImplementedError("Not yet support grouwise weightonly quantization.") + if self.weight_quantize_algo in ["a8w8linear", "a8w4linear"]: + self.act_scale = self.create_parameter( + shape=[1], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.Constant(value=0.0) + ) else: raise NotImplementedError(f"Not yet support weight_quantize_algo: {self.weight_quantize_algo}") @@ -571,6 +600,7 @@ def forward(self, x): if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) else None, bias=None, + state=self.state, ) if self.sequence_parallel: output_ = ReduceScatterOp.apply(output_parallel) @@ -596,6 +626,9 @@ def forward(self, x): if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) else None, bias=self.bias, + state=self.state, ) + if self.training: + self.state += 1 return output diff --git a/paddlenlp/quantization/quantization_utils.py b/paddlenlp/quantization/quantization_utils.py index 8ba8467d7884..8c0264f46860 100644 --- a/paddlenlp/quantization/quantization_utils.py +++ b/paddlenlp/quantization/quantization_utils.py @@ -14,6 +14,7 @@ import re +import paddle import paddle.nn as nn from paddle.distributed.fleet.meta_parallel import ( ColumnParallelLinear, @@ -147,6 +148,7 @@ def convert_to_weight_quantize_state_dict(state_dict, name, quantization_config, weight_name = name + ".weight" quant_weight_name = name + ".quant_weight" quant_scale_name = name + ".quant_scale" + act_scale_name = name + ".act_scale" if quant_weight_name in state_dict and quant_scale_name in state_dict: return state_dict @@ -157,10 +159,12 @@ def convert_to_weight_quantize_state_dict(state_dict, name, quantization_config, quant_weight, quant_scale = quantize_channelwise( target_weight, quantization_config.apply_hadamard, bit_length=8 ) + state_dict[act_scale_name] = paddle.zeros([], dtype="bfloat16").cuda() elif weight_quantize_algo in ["a8w4linear"]: quant_weight, quant_scale = quantize_channelwise( target_weight, quantization_config.apply_hadamard, bit_length=4 ) + state_dict[act_scale_name] = paddle.zeros([], dtype="bfloat16").cuda() else: quant_weight, quant_scale = weight_quantize( x=target_weight, diff --git a/paddlenlp/trainer/trainer.py b/paddlenlp/trainer/trainer.py index f3370f6a48dd..36134d5faa4a 100644 --- a/paddlenlp/trainer/trainer.py +++ b/paddlenlp/trainer/trainer.py @@ -1324,28 +1324,28 @@ def fused_allreduce_gradients_no_sync(paramlist, hcg): if self.args.offload_optim: self._reload_optimizer() - if self.do_grad_scaling: - if args.pipeline_parallel_degree > 1: - assert not self.args.use_expert_parallel, "pipeline moe not work under fp16" - scale_before = paddle.assign(self.scaler._scale) - self.scaler.step(self.optimizer) - self.scaler.update() - scale_after = self.scaler._scale - # Compatible with paddlepaddle 2.6.0 using typo word. - if hasattr(self.scaler, "_cache_founf_inf"): - optimizer_was_run = not self.scaler._cache_founf_inf - else: - optimizer_was_run = not self.scaler._cache_found_inf - if not optimizer_was_run: - scale_before_value = scale_before.cpu().numpy() - scale_after_value = scale_after.cpu().numpy() - logger.warning( - f"optimizer not run, scale_before: {scale_before_value[0]}, scale_after: {scale_after_value[0]}" - ) - elif isinstance(self.optimizer, HybridParallelOptimizer): - self.optimizer._step(parameters_list) - else: - self.optimizer.step() + # if self.do_grad_scaling: + # if args.pipeline_parallel_degree > 1: + # assert not self.args.use_expert_parallel, "pipeline moe not work under fp16" + # scale_before = paddle.assign(self.scaler._scale) + # self.scaler.step(self.optimizer) + # self.scaler.update() + # scale_after = self.scaler._scale + # # Compatible with paddlepaddle 2.6.0 using typo word. + # if hasattr(self.scaler, "_cache_founf_inf"): + # optimizer_was_run = not self.scaler._cache_founf_inf + # else: + # optimizer_was_run = not self.scaler._cache_found_inf + # if not optimizer_was_run: + # scale_before_value = scale_before.cpu().numpy() + # scale_after_value = scale_after.cpu().numpy() + # logger.warning( + # f"optimizer not run, scale_before: {scale_before_value[0]}, scale_after: {scale_after_value[0]}" + # ) + # elif isinstance(self.optimizer, HybridParallelOptimizer): + # self.optimizer._step(parameters_list) + # else: + # self.optimizer.step() if self.args.offload_optim: self._offload_optimizer() @@ -1953,6 +1953,9 @@ def apply_decay_param_fun(x): return x in decay_parameters optimizer_cls, optimizer_kwargs = Trainer.get_optimizer_cls_and_kwargs(self.args) + if self.args.optim == OptimizerNames.AdamW_Qweight: + optimizer_kwargs["quantization_config"] = self.model.config.quantization_config + if hasattr(optimizer_cls, "_create_master_weight") and self.args.fp16_opt_level == "O2": optimizer_kwargs["multi_precision"] = True @@ -2110,6 +2113,11 @@ def get_optimizer_cls_and_kwargs(args: TrainingArguments) -> Tuple[Any, Any]: optimizer_cls = AdamW_16Bit optimizer_kwargs.update(adam_kwargs) + elif args.optim == OptimizerNames.AdamW_Qweight: + from ..utils import AdamWQweight + + optimizer_cls = AdamWQweight + optimizer_kwargs.update(adam_kwargs) else: raise ValueError(f"Trainer cannot instantiate unsupported optimizer: {args.optim}") return optimizer_cls, optimizer_kwargs diff --git a/paddlenlp/trainer/trainer_utils.py b/paddlenlp/trainer/trainer_utils.py index b0988a51e87a..f1a141277a2f 100644 --- a/paddlenlp/trainer/trainer_utils.py +++ b/paddlenlp/trainer/trainer_utils.py @@ -319,6 +319,7 @@ class OptimizerNames(ExplicitEnum): ADAMW_MINI = "adamw_mini" ADAMW_CUSTOM = "adamw_custom" ADAMW_16BIT_MOMENT = "adamw_16bit_moment" + AdamW_Qweight = "adamw_qweight" class ShardingOption(ExplicitEnum): diff --git a/paddlenlp/utils/optimizer.py b/paddlenlp/utils/optimizer.py index 277a970b37f0..fe7081b86c3b 100644 --- a/paddlenlp/utils/optimizer.py +++ b/paddlenlp/utils/optimizer.py @@ -26,6 +26,8 @@ except: adamw_16bit_moment = None +from ..quantization.qat_utils import dequantize_channelwise, quantize_channelwise + class AdamWMini(AdamW): def _add_moments_pows(self, p): @@ -153,7 +155,6 @@ def adamw_python( moment1[:] = mom1 moment2[:] = mom2 beta1_pow[:], beta2_pow[:] = beta1 * beta1_pow[:], beta2 * beta2_pow[:] - # 看看怎么更新 return @@ -408,3 +409,159 @@ def adamw_16bit_moment( moment2[:] = mom2.astype(moment_dtype) beta1_pow[:], beta2_pow[:] = beta1 * beta1_pow[:], beta2 * beta2_pow[:] return + + +class AdamWQweight(AdamW): + def __init__(self, quantization_config, *args, **kwargs): + super().__init__(*args, **kwargs) + self.quant_scale_mapping = {} + for p in self._param_groups: + if "quantization_linear" in p.name and "w_1" in p.name: + self.quant_scale_mapping[p.name.replace("w_1", "w_0")] = p + + self.quantization_config = quantization_config + + def _create_master_weight(self, param): + if param.name in self._master_weights: + var = self._master_weights[param.name] + else: + var_name = self._gen_master_weight_var_name(param) + if param.name in self.quant_scale_mapping: + quant_scale = self.quant_scale_mapping[param.name] + var = dequantize_channelwise( + param, quant_scale, apply_hadamard=self.quantization_config.apply_hadamard + ).astype("float32") + else: + var = paddle.cast(param, "float32") + var.name = var_name + self._master_weights[param.name] = var + return var + + def _is_dtype_fp16_or_bf16(self, dtype): + """ + check the dtype is fp16 or the dtype is bf16 + :param dtype: instance of core.VarDesc.VarType + :return: True if dtype is one of fp16 or bf16, False otherwise + """ + if dtype == paddle.int8: + return True + assert isinstance( + dtype, (core.VarDesc.VarType, core.DataType) + ), "The dtype should be an instance of core.VarDesc.VarType or core.DataType." + if isinstance(dtype, core.VarDesc.VarType): + return dtype == core.VarDesc.VarType.FP16 or dtype == core.VarDesc.VarType.BF16 + else: + return dtype == core.DataType.FLOAT16 or dtype == core.DataType.BFLOAT16 + + def _append_optimize_op(self, block, param_and_grad): + assert isinstance(block, (framework.Block, pir.Block)) + if isinstance(param_and_grad, dict): + param_and_grad = self._update_param_group(param_and_grad) + param, grad = param_and_grad + + # Whether we should do weight decay for the parameter. + with_decay = True + if self._apply_decay_param_fun is not None and not self._apply_decay_param_fun(param.name): + with_decay = False + + moment1 = self._get_accumulator_master(self._moment1_acc_str, param_and_grad[0]) + moment2 = self._get_accumulator_master(self._moment2_acc_str, param_and_grad[0]) + beta1_pow_acc = self._get_accumulator_master(self._beta1_pow_acc_str, param_and_grad[0]) + beta2_pow_acc = self._get_accumulator_master(self._beta2_pow_acc_str, param_and_grad[0]) + find_master = self._multi_precision and self._is_dtype_fp16_or_bf16(param_and_grad[0].dtype) + master_weight = self._master_weights[param_and_grad[0].name] if find_master else None + if param.name in self.quant_scale_mapping: + quant_scale = self.quant_scale_mapping[param.name] + else: + quant_scale = None + lr = self._create_param_lr(param_and_grad) + # create the adamw optimize op + if in_dynamic_or_pir_mode(): + lr_ratio_ = 1.0 if self._lr_ratio is None else self._lr_ratio(param_and_grad[0]) + + _beta1 = self._beta1 if not isinstance(self._beta1, Variable) else self._beta1.item(0) + _beta2 = self._beta2 if not isinstance(self._beta2, Variable) else self._beta2.item(0) + + found_inf = self._get_auxiliary_var("found_inf") if in_pir_mode() else None + self.adamw_custom( + param_and_grad[0], + param_and_grad[1], + lr, + moment1, + moment2, + beta1_pow_acc, + beta2_pow_acc, + master_weight, + found_inf, + _beta1, + _beta2, + self._epsilon, + lr_ratio_, + self._weight_decay, + with_decay, + find_master, + quant_scale, + ) + return None + else: + raise NotImplementedError("Not implemented yet.") + + def adamw_custom( + self, + param, + grad, + learning_rate, + moment1, + moment2, + beta1_pow, + beta2_pow, + master_weight, + skip_update, + beta1, + beta2, + epsilon, + lr_ratio, + coeff, + with_decay, + multi_precision, + quant_scale, + ): + if skip_update: + return + if not with_decay: + coeff = 0.0 + if not multi_precision: + master_weight = None + lr = learning_rate * lr_ratio + if master_weight is not None: + p = master_weight + else: + p = param + + p *= 1.0 - lr * coeff + mom1 = moment1 + mom2 = moment2 + + mom1 = beta1 * mom1 + (1.0 - beta1) * grad + mom2 = beta2 * mom2 + (1.0 - beta2) * grad * grad + denom = mom2.sqrt() / (1.0 - beta2_pow).sqrt() + epsilon + p += (mom1 / denom) * (-(lr / (1.0 - beta1_pow))) + + if master_weight is not None: + master_weight[:] = p + if quant_scale is None: + param[:] = p.astype(param.dtype) + else: + if p.shape[1] == param.shape[0]: + bit_length = 8 + elif p.shape[1] / 2 == param.shape[0]: + bit_length = 4 + param[:], quant_scale[:] = quantize_channelwise( + p.astype("bfloat16"), apply_hadamard=self.quantization_config.apply_hadamard, bit_length=bit_length + ) + else: + param[:] = p + moment1[:] = mom1 + moment2[:] = mom2 + beta1_pow[:], beta2_pow[:] = beta1 * beta1_pow[:], beta2 * beta2_pow[:] + return From 63789b405bdde79c194789be8efcc766761f1e60 Mon Sep 17 00:00:00 2001 From: lugimzzz <zhenglujing@baidu.com> Date: Mon, 21 Apr 2025 17:05:10 +0800 Subject: [PATCH 11/12] fix following comments --- .../peft/lora/lora_quantization_layers.py | 2 +- paddlenlp/quantization/hadamard_utils.py | 97038 +--------------- paddlenlp/quantization/qat_utils.py | 11 +- paddlenlp/quantization/quantization_linear.py | 31 +- paddlenlp/quantization/quantization_utils.py | 13 +- 5 files changed, 47 insertions(+), 97048 deletions(-) diff --git a/paddlenlp/peft/lora/lora_quantization_layers.py b/paddlenlp/peft/lora/lora_quantization_layers.py index 1b6569e46249..35715b272bdc 100644 --- a/paddlenlp/peft/lora/lora_quantization_layers.py +++ b/paddlenlp/peft/lora/lora_quantization_layers.py @@ -1,4 +1,4 @@ -# Copyright (c) 2025 PaddlePaddle Authors. All Rights Reserved. +# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/paddlenlp/quantization/hadamard_utils.py b/paddlenlp/quantization/hadamard_utils.py index 1bb3459a84f3..531d8f208826 100644 --- a/paddlenlp/quantization/hadamard_utils.py +++ b/paddlenlp/quantization/hadamard_utils.py @@ -14,97 +14,12 @@ import paddle -# Adapted from https://github.com/Cornell-RelaxML/quip-sharp/blob/main/lib/utils/matmul_had.py +def matmul_hadU(X): -def get_hadK(n, transpose=False): - """ - 获取一个矩阵,该矩阵是用于哈达纳变换的基础矩阵。 - 如果矩阵大小为2^k,则返回一个基础矩阵,否则返回None。 - 如果transpose参数为True,则返回基础矩阵的转置形式。 - - Args: - n (int): 矩阵大小,必须是2的幂或者能被以下任意值整除:172, 156, 140, 108, 60, 52, 36, 28, 40, 20, 12。 - transpose (bool, optional): 默认为False,表示返回基础矩阵本身。如果为True,则返回基础矩阵的转置形式。 Default: False. - - Returns: - tuple (ndarray, int): 第一个元素是一个ndarray类型的矩阵,代表基础矩阵;第二个元素是一个整数,代表基础矩阵的大小(即矩阵大小/基础矩阵大小)。如果不存在基础矩阵,则返回(None, None)。 - """ - hadK, K = None, None - if n % 172 == 0: # llama-2-7b up - assert is_pow2(n // 172) - K = 172 - hadK = get_had172().T if transpose else get_had172() - elif n % 156 == 0: # llama-1-30b 3x hidden - assert is_pow2(n // 156) - K = 156 - hadK = get_had156().T if transpose else get_had156() - elif n % 140 == 0: # llama-1-30b intermediate - assert is_pow2(n // 140) - K = 140 - hadK = get_had140().T if transpose else get_had140() - elif n % 108 == 0: # llama-1-13b intermediate - assert is_pow2(n // 108) - K = 108 - hadK = get_had108().T if transpose else get_had108() - elif n % 60 == 0: # llama-1-13b 3x hidden - assert is_pow2(n // 60) - K = 60 - hadK = get_had60().T if transpose else get_had60() - elif n % 52 == 0: # llama-1-13b 1x hidden - assert is_pow2(n // 52) - K = 52 - hadK = get_had52().T if transpose else get_had52() - elif n % 36 == 0: - assert is_pow2(n // 36) - K = 36 - hadK = get_had36().T if transpose else get_had36() - elif n % 28 == 0: # llama-3 up - assert is_pow2(n // 28) - K = 28 - hadK = get_had28().T if transpose else get_had28() - elif n % 40 == 0: - assert is_pow2(n // 40) - K = 40 - hadK = get_had40().T if transpose else get_had40() - elif n % 20 == 0: - assert is_pow2(n // 20) - K = 20 - hadK = get_had20().T if transpose else get_had20() - elif n % 12 == 0: - assert is_pow2(n // 12) - K = 12 - hadK = get_had12().T if transpose else get_had12() - else: - assert is_pow2(n) - K = 1 - - if hadK is not None: - hadK = hadK.cast("float32") - return hadK, K - - -def matmul_hadU(X, transpose=False): - """ - hadamard变换。 - - 如果需要转置输入矩阵,则可以指定transpose参数为True。 - - Args: - X (Tensor, numpy.ndarray): 形状为(..., m, n)的矩阵,其中m和n分别是行数和列数。 - Tensor类型的矩阵支持任何浮点数类型,numpy.ndarray类型的矩阵只支持浮点数类型。 - transpose (bool, optional): 默认值为False,表示不进行转置操作。如果设为True,则会将输入矩阵转置后再进行计算。 - 默认值:False. - - Returns: - Tensor: 形状为(..., m, n)的矩阵,其中m和n分别是行数和列数,结果矩阵的每个元素是输入矩阵的对应位置元素与另一个矩阵的对应位置元素的乘积。 - 返回的Tensor类型的矩阵支持任何浮点数类型,numpy.ndarray类型的矩阵只支持浮点数类型。 - """ - n = X.shape[-1] - hadK, K = get_hadK(n, transpose) - input = X.clone().reshape((-1, n, 1)) + input = X.clone().reshape((-1, X.shape[-1], 1)) output = input.clone() - while input.shape[1] > K: + while input.shape[1] > 1: input = input.reshape((input.shape[0], input.shape[1] // 2, 2, input.shape[2])) output = output.reshape(input.shape) output[:, :, 0, :] = input[:, :, 0, :] + input[:, :, 1, :] @@ -113,15 +28,10 @@ def matmul_hadU(X, transpose=False): (input, output) = (output, input) del output - if K > 1: - input = hadK.reshape((1, K, K)).to(input) @ input - - # return input.reshape(X.shape) / paddle.to_tensor(n, dtype='float32').sqrt() return input.reshape(X.shape) def random_hadamard_matrix(size, dtype, is_block=False): - # See https://cornell-relaxml.github.io/quip-sharp/ , Section "Randomized Hadamard Transformation" if not is_block: A = paddle.randint(low=0, high=2, shape=[size, size]).astype("float32") * 2 - 1 Q, _ = paddle.linalg.qr(A) @@ -140,96945 +50,3 @@ def random_hadamard_matrix(size, dtype, is_block=False): start_col = i * block_size large_matrix[start_row : start_row + block_size, start_col : start_col + block_size] = block return large_matrix.cast(dtype), block_size - - -def is_pow2(n): - """ - 判断一个数是否为2的幂次方。 - 参数(必需): - n (int) - 要检查的整数。 - 返回值(bool): - True,如果n是2的幂次方;False,如果不是。 - """ - return (n & (n - 1) == 0) and (n > 0) - - -# hadamard matrices for had12, had36.pal2, had52,will, -# # had60.pal, had108.pal, had140.pal, had156.will, had172.will: -# http://www.neilsloane.com/hadamard/index.html -def get_had12(): - """ - 获取HAD12矩阵,返回一个PaddleTensor对象。 - 该矩阵用于计算Hadamard乘法,其中每个元素的值为1或-1。 - - Returns: - paddle.Tensor (float32) – 大小为(12, 12)的二维矩阵,每个元素的值为1或-1。 - """ - return paddle.to_tensor( - [ - [+1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], - [+1, +1, -1, +1, -1, -1, -1, +1, +1, +1, -1, +1], - [+1, +1, +1, -1, +1, -1, -1, -1, +1, +1, +1, -1], - [+1, -1, +1, +1, -1, +1, -1, -1, -1, +1, +1, +1], - [+1, +1, -1, +1, +1, -1, +1, -1, -1, -1, +1, +1], - [+1, +1, +1, -1, +1, +1, -1, +1, -1, -1, -1, +1], - [+1, +1, +1, +1, -1, +1, +1, -1, +1, -1, -1, -1], - [+1, -1, +1, +1, +1, -1, +1, +1, -1, +1, -1, -1], - [+1, -1, -1, +1, +1, +1, -1, +1, +1, -1, +1, -1], - [+1, -1, -1, -1, +1, +1, +1, -1, +1, +1, -1, +1], - [+1, +1, -1, -1, -1, +1, +1, +1, -1, +1, +1, -1], - [+1, -1, +1, -1, -1, -1, +1, +1, +1, -1, +1, +1], - ] - ) - - -def get_had40(): - """ - 获取HAD40矩阵,元素类型为float32。 - - Returns: - Tensor (paddle.Tensor): HAD40矩阵,元素类型为float32。 - """ - return paddle.to_tensor( - [ - [ - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - ] - ) - - -def get_had20(): - """ - 获取size为20的Hadamard矩阵。 - - Returns: - Tensor (float32) – 大小为(20, 20)的hadamard矩阵。 - """ - return paddle.to_tensor( - [ - [+1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], - [+1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1], - [+1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1], - [+1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1], - [+1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1], - [+1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1], - [+1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1], - [+1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1], - [+1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1], - [+1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1], - [+1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1, -1], - [+1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1, +1], - [+1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1, -1], - [+1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1, -1], - [+1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1, -1], - [+1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1, -1], - [+1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1, +1], - [+1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1, +1], - [+1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1, -1], - [+1, -1, +1, +1, -1, -1, -1, -1, +1, -1, +1, -1, +1, +1, +1, +1, -1, -1, +1, +1], - ] - ) - - -def get_had28(): - """ - 获取size为28的hadamard矩阵。 - - Returns: - Tensor (float32): 形状为(28, 28),每个元素的值为+1或-1。 - """ - return paddle.to_tensor( - [ - [ - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - ], - ] - ) - - -def get_had36(): - """ - 获取size为36的hadamard矩阵。 - - Returns: - Tensor (float32): 形状为(36, 36),每个元素的值为+1或-1。 - """ - return paddle.to_tensor( - [ - [ - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - ], - ] - ) - - -def get_had60(): - """ - 获取size为60的hadamard矩阵。 - - Returns: - Tensor (float32): 形状为(60, 60),每个元素的值为+1或-1。 - """ - return paddle.to_tensor( - [ - [ - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - ], - ] - ) - - -def get_had52(): - """ - 获取size为52的hadamard矩阵。 - - Returns: - Tensor (float32): 形状为(52, 52),每个元素的值为+1或-1。 - """ - return paddle.to_tensor( - [ - [ - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - ], - [ - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - ], - [ - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - ], - [ - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - ], - [ - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - ], - [ - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - ], - [ - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - ], - [ - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - ], - [ - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - ], - [ - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - ], - [ - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - ], - [ - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - ], - [ - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - ], - ] - ) - - -def get_had108(): - """ - 获取size为108的hadamard矩阵。 - - Returns: - Tensor (float32): 形状为(108, 108),每个元素的值为+1或-1。 - """ - return paddle.to_tensor( - [ - [ - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - ], - ] - ) - - -def get_had140(): - """ - 获取size为140的hadamard矩阵。 - - Returns: - Tensor (float32): 形状为(140, 140),每个元素的值为+1或-1。 - """ - return paddle.to_tensor( - [ - [ - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - ] - ) - - -def get_had156(): - """ - 获取size为156的hadamard矩阵。 - - Returns: - Tensor (float32): 形状为(156, 156),每个元素的值为+1或-1。 - """ - return paddle.to_tensor( - [ - [ - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - ], - [ - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - ], - [ - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - ], - [ - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - ], - [ - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - ], - [ - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - ], - [ - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - ], - [ - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - ], - [ - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - ], - [ - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - ], - [ - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - ], - [ - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - ], - [ - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - ], - [ - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - ], - [ - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - ], - [ - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - ], - [ - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - ], - [ - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - ], - [ - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - ], - [ - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - ], - [ - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - [ - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - ], - [ - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - ], - [ - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - ], - [ - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - ], - [ - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - ], - [ - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - ], - [ - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - [ - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - ], - [ - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - ], - [ - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - ], - [ - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - ], - [ - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - ] - ) - - -def get_had172(): - """ - 获取size为172的hadamard矩阵。 - - Returns: - Tensor (float32): 形状为(172, 172),每个元素的值为+1或-1。 - """ - return paddle.to_tensor( - [ - [ - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - ], - [ - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - ], - [ - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - ], - [ - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - ], - [ - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - ], - [ - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - ], - [ - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - ], - [ - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - ], - [ - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - ], - [ - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - ], - [ - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - ], - [ - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - ], - [ - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - ], - [ - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - ], - [ - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - ], - [ - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - ], - [ - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - ], - [ - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - ], - [ - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - ], - [ - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - ], - [ - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - ], - [ - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - ], - [ - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - ], - [ - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - ], - [ - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - ], - [ - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - ], - [ - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - ], - [ - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - ], - [ - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - ], - [ - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - ], - [ - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - ], - [ - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - ], - [ - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - ], - [ - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - ], - [ - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - ], - [ - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - ], - [ - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - ], - [ - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - ], - [ - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - ], - [ - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - ], - [ - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - ], - [ - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - ], - [ - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - ], - [ - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - ], - [ - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - ], - [ - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - ], - [ - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - ], - [ - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - ], - [ - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - ], - [ - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - ], - [ - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - ], - [ - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - ], - [ - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - ], - [ - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - ], - [ - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - ], - [ - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - ], - [ - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - ], - [ - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - ], - [ - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - ], - [ - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - ], - [ - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - ], - [ - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - ], - [ - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - +1, - ], - [ - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - +1, - ], - [ - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - -1, - ], - [ - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - -1, - ], - [ - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - -1, - ], - [ - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - -1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - -1, - +1, - -1, - -1, - -1, - -1, - +1, - +1, - +1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - +1, - +1, - +1, - -1, - +1, - -1, - +1, - +1, - +1, - +1, - -1, - -1, - +1, - +1, - -1, - -1, - -1, - +1, - ], - ] - ) diff --git a/paddlenlp/quantization/qat_utils.py b/paddlenlp/quantization/qat_utils.py index e70d6406c5b9..84147aa55ee8 100644 --- a/paddlenlp/quantization/qat_utils.py +++ b/paddlenlp/quantization/qat_utils.py @@ -26,12 +26,12 @@ def quantize_tensorwise(x, quantization_config=None, bit_length=8, state=0, trai if quantization_config.apply_hadamard: target_x = x @ infohub.hadamard[x.shape[-1]][0] else: - target_x = x.clone() + target_x = x if act_scale is not None: if training: scale = paddle.max(paddle.abs(target_x)) / qmax - act_scale[:] = (state * act_scale + scale) / (state + 1) + act_scale.set_value((state * act_scale + scale) / (state + 1)) if state > quantization_config.skip_first_act_scale_step: scale = act_scale else: @@ -66,6 +66,7 @@ def quantize_channelwise(w, apply_hadamard=False, bit_length=8): block_size = 1 scale = paddle.max(paddle.abs(w), axis=0, keepdim=True) / qmax w_int8 = paddle.clip((w / scale).round(), qmin, qmax).astype("int8") + scale.stop_gradient = True return w_int8.T, scale.squeeze(0) / block_size @@ -140,9 +141,11 @@ def backward(ctx, grad_output): if not quant_weight.stop_gradient: if len(x.shape) == 2: - weight_grad = paddle.einsum("sh,sd->hd", x, grad_output) + weight_grad = paddle.matmul(x.transpose([1, 0]), grad_output) else: - weight_grad = paddle.einsum("bsh,bsd->hd", x, grad_output) + weight_grad = paddle.matmul( + x.reshape([-1, x.shape[-1]]).transpose([1, 0]), grad_output.reshape([-1, grad_output.shape[-1]]) + ) else: weight_grad = None diff --git a/paddlenlp/quantization/quantization_linear.py b/paddlenlp/quantization/quantization_linear.py index 7324848b11b6..95c1848789df 100644 --- a/paddlenlp/quantization/quantization_linear.py +++ b/paddlenlp/quantization/quantization_linear.py @@ -177,7 +177,12 @@ def backward(ctx, grad_output): input_grad = None if not quant_weight.stop_gradient: - weight_grad = paddle.einsum("bsh,bsd->hd", x, grad_output) + if len(x.shape) == 2: + weight_grad = paddle.matmul(x.transpose([1, 0]), grad_output) + else: + weight_grad = paddle.matmul( + x.reshape([-1, x.shape[-1]]).transpose([1, 0]), grad_output.reshape([-1, grad_output.shape[-1]]) + ) else: weight_grad = None @@ -202,6 +207,7 @@ def quant_weight_linear( act_state=None, ): if weight_quantize_algo in ["a8w8linear", "a8w4linear"]: + state, training, act_scale = act_state return QATFunc.apply( @@ -264,12 +270,13 @@ def __init__( dtype=self._dtype, is_bias=False, ) + self.quant_scale.stop_gradient = True else: # TODO(lugimzzz): support groupwise in next PR raise NotImplementedError("Not yet support grouwise weightonly quantization.") if self.weight_quantize_algo in ["a8w8linear", "a8w4linear"]: self.act_scale = self.create_parameter( - shape=[1], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.Constant(value=0.0) + shape=[], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.Constant(value=0.0) ) self.act_scale.stop_gradient = True @@ -423,6 +430,7 @@ def __init__( dtype=self._dtype, is_bias=False, ) + self.quant_scale.stop_gradient = True self.quant_scale.is_distributed = True if self.is_mp else False if self.quant_scale.is_distributed: self.quant_scale.split_axis = 0 @@ -431,8 +439,10 @@ def __init__( raise NotImplementedError("Not yet support grouwise weightonly quantization.") if self.weight_quantize_algo in ["a8w8linear", "a8w4linear"]: self.act_scale = self.create_parameter( - shape=[1], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.Constant(value=0.0) + shape=[], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.Constant(value=0.0) ) + self.act_scale.is_distributed = True if self.is_mp else False + self.act_scale.stop_gradient = True else: raise NotImplementedError(f"Not yet support weight_quantize_algo: {self.weight_quantize_algo}") if bias_attr is False: @@ -473,7 +483,9 @@ def forward(self, x): if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) else None, bias=self.bias, - state=self.state, + act_state=(self.state, self.training, self.act_scale) + if self.weight_quantize_algo in ["a8w8linear", "a8w4linear"] + else None, ) if self.training: self.state += 1 @@ -556,6 +568,7 @@ def __init__( dtype=self._dtype, is_bias=False, ) + self.quant_scale.stop_gradient = True self.quant_scale.is_distributed = True if self.is_mp else False if self.quant_scale.is_distributed: self.quant_scale.split_axis = 0 @@ -566,6 +579,8 @@ def __init__( self.act_scale = self.create_parameter( shape=[1], dtype=self._dtype, is_bias=False, default_initializer=nn.initializer.Constant(value=0.0) ) + self.act_scale.is_distributed = True if self.is_mp else False + self.act_scale.stop_gradient = True else: raise NotImplementedError(f"Not yet support weight_quantize_algo: {self.weight_quantize_algo}") @@ -600,7 +615,9 @@ def forward(self, x): if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) else None, bias=None, - state=self.state, + act_state=(self.state, self.training, self.act_scale) + if self.weight_quantize_algo in ["a8w8linear", "a8w4linear"] + else None, ) if self.sequence_parallel: output_ = ReduceScatterOp.apply(output_parallel) @@ -626,7 +643,9 @@ def forward(self, x): if (self.weight_quantize_algo in ["fp4", "nf4"] and self.quantization_config.qlora_weight_double_quant) else None, bias=self.bias, - state=self.state, + act_state=(self.state, self.training, self.act_scale) + if self.weight_quantize_algo in ["a8w8linear", "a8w4linear"] + else None, ) if self.training: self.state += 1 diff --git a/paddlenlp/quantization/quantization_utils.py b/paddlenlp/quantization/quantization_utils.py index 8c0264f46860..8bba15d66770 100644 --- a/paddlenlp/quantization/quantization_utils.py +++ b/paddlenlp/quantization/quantization_utils.py @@ -159,12 +159,16 @@ def convert_to_weight_quantize_state_dict(state_dict, name, quantization_config, quant_weight, quant_scale = quantize_channelwise( target_weight, quantization_config.apply_hadamard, bit_length=8 ) - state_dict[act_scale_name] = paddle.zeros([], dtype="bfloat16").cuda() + act_scale = paddle.zeros([], dtype="bfloat16").cuda() + act_scale.stop_gradient = True + state_dict[act_scale_name] = act_scale elif weight_quantize_algo in ["a8w4linear"]: quant_weight, quant_scale = quantize_channelwise( target_weight, quantization_config.apply_hadamard, bit_length=4 ) - state_dict[act_scale_name] = paddle.zeros([], dtype="bfloat16").cuda() + act_scale = paddle.zeros([], dtype="bfloat16").cuda() + act_scale.stop_gradient = True + state_dict[act_scale_name] = act_scale else: quant_weight, quant_scale = weight_quantize( x=target_weight, @@ -239,6 +243,7 @@ def update_loaded_state_dict_keys(state_dict, quantization_linear_list, quantiza weight_name = name + ".weight" quant_weight_name = name + ".quant_weight" quant_scale_name = name + ".quant_scale" + act_scale_name = name + ".act_scale" qquant_scale_name = name + ".qquant_scale" double_quant_scale_name = name + ".double_quant_scale" quant_sacle_offset_name = name + ".quant_sacle_offset" @@ -254,6 +259,10 @@ def update_loaded_state_dict_keys(state_dict, quantization_linear_list, quantiza state_dict.append(quant_sacle_offset_name) else: state_dict.append(quant_scale_name) + weight_quantize_algo = parse_weight_quantize_algo(quantization_config, name) + if weight_quantize_algo in ["a8w8linear", "a8w4linear"]: + state_dict.append(act_scale_name) + else: if not ignore_warning: logger.warning( From 2d5010755719664fa04bef54e10c29ebe4201f4d Mon Sep 17 00:00:00 2001 From: lugimzzz <zhenglujing@baidu.com> Date: Tue, 22 Apr 2025 15:36:45 +0800 Subject: [PATCH 12/12] fix following comments --- paddlenlp/trainer/trainer.py | 45 ++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/paddlenlp/trainer/trainer.py b/paddlenlp/trainer/trainer.py index 36134d5faa4a..c655bda49de6 100644 --- a/paddlenlp/trainer/trainer.py +++ b/paddlenlp/trainer/trainer.py @@ -1324,28 +1324,28 @@ def fused_allreduce_gradients_no_sync(paramlist, hcg): if self.args.offload_optim: self._reload_optimizer() - # if self.do_grad_scaling: - # if args.pipeline_parallel_degree > 1: - # assert not self.args.use_expert_parallel, "pipeline moe not work under fp16" - # scale_before = paddle.assign(self.scaler._scale) - # self.scaler.step(self.optimizer) - # self.scaler.update() - # scale_after = self.scaler._scale - # # Compatible with paddlepaddle 2.6.0 using typo word. - # if hasattr(self.scaler, "_cache_founf_inf"): - # optimizer_was_run = not self.scaler._cache_founf_inf - # else: - # optimizer_was_run = not self.scaler._cache_found_inf - # if not optimizer_was_run: - # scale_before_value = scale_before.cpu().numpy() - # scale_after_value = scale_after.cpu().numpy() - # logger.warning( - # f"optimizer not run, scale_before: {scale_before_value[0]}, scale_after: {scale_after_value[0]}" - # ) - # elif isinstance(self.optimizer, HybridParallelOptimizer): - # self.optimizer._step(parameters_list) - # else: - # self.optimizer.step() + if self.do_grad_scaling: + if args.pipeline_parallel_degree > 1: + assert not self.args.use_expert_parallel, "pipeline moe not work under fp16" + scale_before = paddle.assign(self.scaler._scale) + self.scaler.step(self.optimizer) + self.scaler.update() + scale_after = self.scaler._scale + # Compatible with paddlepaddle 2.6.0 using typo word. + if hasattr(self.scaler, "_cache_founf_inf"): + optimizer_was_run = not self.scaler._cache_founf_inf + else: + optimizer_was_run = not self.scaler._cache_found_inf + if not optimizer_was_run: + scale_before_value = scale_before.cpu().numpy() + scale_after_value = scale_after.cpu().numpy() + logger.warning( + f"optimizer not run, scale_before: {scale_before_value[0]}, scale_after: {scale_after_value[0]}" + ) + elif isinstance(self.optimizer, HybridParallelOptimizer): + self.optimizer._step(parameters_list) + else: + self.optimizer.step() if self.args.offload_optim: self._offload_optimizer() @@ -2176,7 +2176,6 @@ def _decorate_exclude_layers(self, model: nn.Layer): return exclude_layers def _wrap_model(self, model, training=True): - return model # train/eval could be run multiple-times - if already wrapped, don't re-wrap it again if unwrap_model(model) is not model: