commit c8ab4d077b491fab974140eb98a9f0a0478f79ec Author: Luke Hubmayer-Werner Date: Wed May 20 16:49:22 2020 +0930 First commit - loads a saved pzpre3.1 file diff --git a/DroidSans.ttf b/DroidSans.ttf new file mode 100644 index 0000000..ad1efca Binary files /dev/null and b/DroidSans.ttf differ diff --git a/Main.tscn b/Main.tscn new file mode 100644 index 0000000..86c4eb9 --- /dev/null +++ b/Main.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://scripts/GameField.gd" type="Script" id=1] + +[node name="Control" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="GameField" type="ColorRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +color = Color( 0.8, 0.8, 0.8, 1 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/default_env.tres b/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/dynamicfont.tres b/dynamicfont.tres new file mode 100644 index 0000000..a385cfc --- /dev/null +++ b/dynamicfont.tres @@ -0,0 +1,7 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://DroidSans.ttf" type="DynamicFontData" id=1] + +[resource] +size = 24 +font_data = ExtResource( 1 ) diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..c98fbb6 Binary files /dev/null and b/icon.png differ diff --git a/icon.png.import b/icon.png.import new file mode 100644 index 0000000..96cbf46 --- /dev/null +++ b/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..1258115 --- /dev/null +++ b/project.godot @@ -0,0 +1,38 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +_global_script_classes=[ ] +_global_script_class_icons={ + +} + +[application] + +config/name="CoopPuzzle" +run/main_scene="res://Main.tscn" +config/icon="res://icon.png" + +[autoload] + +Common="*res://scripts/Common.gd" + +[debug] + +gdscript/warnings/unused_variable=false +gdscript/warnings/unused_argument=false +gdscript/warnings/unreachable_code=false +gdscript/warnings/integer_division=false + +[rendering] + +quality/driver/driver_name="GLES2" +vram_compression/import_etc=true +vram_compression/import_etc2=false +environment/default_environment="res://default_env.tres" diff --git a/scripts/Common.gd b/scripts/Common.gd new file mode 100644 index 0000000..ac097b5 --- /dev/null +++ b/scripts/Common.gd @@ -0,0 +1,126 @@ +extends Node + + +class PoolArray2D: + var _array + var _rows := 1 + var _cols := 1 +# const XORMASK := (1<<8)-1 + func _init(rows:=1, cols:=1, init=null): + assert(rows>0) + assert(cols>0) + _rows = rows + _cols = cols + make_array() + if init != null: + for row in rows: + for col in cols: + set_cell(row, col, init) + + func make_array(): + _array = PoolByteArray() + _array.resize(_rows * _cols) + + func set_cell(row: int, col: int, value: int): + assert(row < _rows) + assert(col < _cols) + _array.set(row + col*_rows, value) + + func get_cell(row: int, col: int) -> int: + assert(row < _rows) + assert(col < _cols) + return _array[row + col*_rows] + + func get_flag(row: int, col: int, value: int) -> bool: + return bool(_array[row + col*_rows] & value) + + func set_flag(row: int, col: int, value: int): + _array.set(row + col*_rows, _array[row + col*_rows]|value) + + +class ByteArray2D extends PoolArray2D: + const XORMASK := (1<<8)-1 + func _init(rows:=1, cols:=1, init=null).(rows, cols, init): + pass + + func clear_flag(row: int, col: int, value: int): + _array.set(row + col*_rows, _array[row + col*_rows]&(value^XORMASK)) + + +class IntArray2D extends PoolArray2D: + const XORMASK := (1<<32)-1 + func _init(rows:=1, cols:=1, init=null).(rows, cols, init): + pass + + func make_array(): + _array = PoolIntArray() + _array.resize(_rows * _cols) + + func clear_flag(row: int, col: int, value: int): + _array.set(row + col*_rows, _array[row + col*_rows]&(value^XORMASK)) + + +#class ByteArray2D: +# var _array: PoolByteArray +# var _rows := 1 +# var _cols := 1 +# const XORMASK := (1<<8)-1 +# func _init(rows:=1, cols:=1): +# assert(rows>0) +# assert(cols>0) +# _rows = rows +# _cols = cols +# _array = PoolByteArray() +# _array.resize(rows*cols) +# +# func set_cell(row: int, col: int, value: int): +# assert(row < _rows) +# assert(col < _cols) +# _array.set(row + col*_rows, value) +# +# func get_cell(row: int, col: int) -> int: +# assert(row < _rows) +# assert(col < _cols) +# return _array[row + col*_rows] +# +# func get_flag(row: int, col: int, value: int) -> bool: +# return bool(_array[row + col*_rows] & value) +# +# func set_flag(row: int, col: int, value: int): +# _array.set(row + col*_rows, _array[row + col*_rows]|value) +# +# func clear_flag(row: int, col: int, value: int): +# _array.set(row + col*_rows, _array[row + col*_rows]&(value^XORMASK)) + + +#class IntArray2D: +# var _array: PoolIntArray +# var _rows := 1 +# var _cols := 1 +# const XORMASK := (1<<32)-1 +# func _init(rows:=1, cols:=1): +# assert(rows>0) +# assert(cols>0) +# _rows = rows +# _cols = cols +# _array = PoolIntArray() +# _array.resize(rows*cols) +# +# func set_cell(row: int, col: int, value: int): +# assert(row < _rows) +# assert(col < _cols) +# _array.set(row + col*_rows, value) +# +# func get_cell(row: int, col: int) -> int: +# assert(row < _rows) +# assert(col < _cols) +# return _array[row + col*_rows] +# +# func get_flag(row: int, col: int, value: int) -> bool: +# return bool(_array[row + col*_rows] & value) +# +# func set_flag(row: int, col: int, value: int): +# _array.set(row + col*_rows, _array[row + col*_rows] | value) +# +# func clear_flag(row: int, col: int, value: int): +# _array.set(row + col*_rows, _array[row + col*_rows]&(value^XORMASK)) diff --git a/scripts/GameField.gd b/scripts/GameField.gd new file mode 100644 index 0000000..8aa3683 --- /dev/null +++ b/scripts/GameField.gd @@ -0,0 +1,182 @@ +extends ColorRect + +export var rows: int = 44 +export var cols: int = 63 +export var h_margin: int = 2 +export var v_margin: int = 2 +export var grid_color: Color = Color.black +var READY := false + +const ByteArray2D = Common.ByteArray2D +const IntArray2D = Common.IntArray2D + +onready var cell_numbers: ByteArray2D +const NUMBER_NONE := 255 +onready var cell_colors: ByteArray2D +onready var corner_marks: IntArray2D +enum CornerMark { + L_RIGHT=1, L_DOWN=2, X_RIGHT=4, X_DOWN=8, + DARC_1=16, DARC_2=32, DARC_3=64, DARC_4=128, + SARC_1=256, SARC_2=512, SARC_3=1024, SARC_4=2048 +} +func _ready(): +# load_puzzle('res://slither_blank.txt') + load_puzzle('res://slither-202005192059.txt') + + +func draw_string_centered(font, position, string, color := Color.white): + draw_string(font, Vector2(position.x - font.get_string_size(string).x/2.0, position.y + font.get_ascent()), string, color) + +const font := preload('res://dynamicfont.tres') +const COLORS = [null, Color.lightgreen, Color.lightyellow, Color.lightblue, Color.lightpink] + +var h0 := 0.0 +var v0 := 0.0 +var h_space := 1.0 +var v_space := 1.0 +func update_grid_spacing() -> void: + h_space = rect_size.x / (h_margin * 2 + cols) + v_space = rect_size.y / (v_margin * 2 + rows) + if h_space > v_space: + h_space = v_space + else: + v_space = h_space + h0 = h_space * h_margin + v0 = v_space * v_margin + +func grid_corner(row, col) -> Vector2: + return Vector2(h0+col*h_space, v0+row*v_space) + +func _draw() -> void: + if not READY: + return + update_grid_spacing() + font.set_size(v_space-5) + + # Colors + for row in rows: + for col in cols: + var color = COLORS[cell_colors.get_cell(row, col)] + if color != null: + draw_rect(Rect2(Vector2(h0+col*h_space, v0+row*v_space), Vector2(h_space, v_space)), color, true) + + # Lines + for row in rows: + for col in cols: + if corner_marks.get_flag(row, col, CornerMark.L_RIGHT): + draw_line(Vector2(h0+col*h_space, v0+row*v_space), Vector2(h0+(col+1)*h_space, v0+row*v_space), Color.blue) + elif corner_marks.get_flag(row, col, CornerMark.X_RIGHT): + draw_line(Vector2(h0+(col+0.4)*h_space, v0+row*v_space), Vector2(h0+(col+0.6)*h_space, v0+row*v_space), Color.red) + else: + draw_line(Vector2(h0+col*h_space, v0+row*v_space), Vector2(h0+(col+1)*h_space, v0+row*v_space), Color.white) + + if corner_marks.get_flag(row, col, CornerMark.L_DOWN): + draw_line(Vector2(h0+col*h_space, v0+row*v_space), Vector2(h0+col*h_space, v0+(row+1)*v_space), Color.blue) + elif corner_marks.get_flag(row, col, CornerMark.X_DOWN): + draw_line(Vector2(h0+col*h_space, v0+(row+0.4)*v_space), Vector2(h0+col*h_space, v0+(row+0.6)*v_space), Color.red) + else: + draw_line(Vector2(h0+col*h_space, v0+row*v_space), Vector2(h0+col*h_space, v0+(row+1)*v_space), Color.white) + for col in cols: + if corner_marks.get_flag(rows, col, CornerMark.L_RIGHT): + draw_line(Vector2(h0+col*h_space, v0+rows*v_space), Vector2(h0+(col+1)*h_space, v0+rows*v_space), Color.blue) + elif corner_marks.get_flag(rows, col, CornerMark.X_RIGHT): + draw_line(Vector2(h0+(col+0.4)*h_space, v0+rows*v_space), Vector2(h0+(col+0.6)*h_space, v0+rows*v_space), Color.red) + else: + draw_line(Vector2(h0+col*h_space, v0+rows*v_space), Vector2(h0+(col+1)*h_space, v0+rows*v_space), Color.white) + for row in rows: + if corner_marks.get_flag(row, cols, CornerMark.L_DOWN): + draw_line(Vector2(h0+cols*h_space, v0+row*v_space), Vector2(h0+cols*h_space, v0+(row+1)*v_space), Color.blue) + elif corner_marks.get_flag(row, cols, CornerMark.X_DOWN): + draw_line(Vector2(h0+cols*h_space, v0+(row+0.4)*v_space), Vector2(h0+cols*h_space, v0+(row+0.6)*v_space), Color.red) + else: + draw_line(Vector2(h0+cols*h_space, v0+row*v_space), Vector2(h0+cols*h_space, v0+(row+1)*v_space), Color.white) + + # Numbers + for row in rows: + for col in cols: + var num = cell_numbers.get_cell(row, col) + if num < 4: + draw_string_centered(font, Vector2(h0+(col+0.5)*h_space, v0+row*v_space), str(num), Color.black) + + # COORDS + for row in rows: + draw_string_centered(font, Vector2(h0/2, v0+row*v_space), '%02d'%row, Color.black) + for col in cols: + draw_string_centered(font, Vector2(h0+(col+0.5)*h_space, v0/4), num2alpha(col), Color.black) + +func num2alpha(num: int, uppercase:=false): + var c = ord('A' if uppercase else 'a') + if num >= 26: + return char(c+(num/26)-1) + char(c+(num%26)) + else: + return char(c+num) + +func _process(delta: float) -> void: + update() + +const num_dict := {'.': NUMBER_NONE, '0': 0, '1': 1, '2': 2, '3': 3} +const colornum_dict := {'0': 0, '1': 1, '2': 2} +func load_puzzle(filename: String): + var file := File.new() + var error = file.open(filename, File.READ) + if file.get_line() != 'pzprv3.1': + return + if file.get_line() != 'slither': + return + rows = int(file.get_line()) + cols = int(file.get_line()) + cell_numbers = ByteArray2D.new(rows, cols) + cell_colors = ByteArray2D.new(rows, cols) + corner_marks = IntArray2D.new(rows+1, cols+1, 0) + + var row = 0 + var stage = 0 + var until = [rows, rows, rows, rows+1, 0] + while not file.eof_reached(): + if row >= until[stage]: + stage += 1 + row = 0 + match stage: + 0: # Puzzle definition numbers + var line = file.get_csv_line(' ') + var col = 0 + for numstr in line: + if col < cols: + cell_numbers.set_cell(row, col, num_dict.get(numstr, NUMBER_NONE)) + col += 1 + 1: # cell colors + var line = file.get_csv_line(' ') + var col = 0 + for numstr in line: + if col < cols: + cell_colors.set_cell(row, col, colornum_dict.get(numstr, 0)) + col += 1 + 2: # vert lines + var line = file.get_csv_line(' ') + var col = 0 + for numstr in line: + if col < cols+1: + match int(numstr): + 1: + corner_marks.set_flag(row, col, CornerMark.L_DOWN) + -1: + corner_marks.set_flag(row, col, CornerMark.X_DOWN) + col += 1 + 3: # hor lines + var line = file.get_csv_line(' ') + var col = 0 + for numstr in line: + if col < cols+1: + match int(numstr): + 1: + corner_marks.set_flag(row, col, CornerMark.L_RIGHT) + -1: + corner_marks.set_flag(row, col, CornerMark.X_RIGHT) + col += 1 + 4: + break + row += 1 + file.close() + READY = true + + diff --git a/slither-202005192059.txt b/slither-202005192059.txt new file mode 100644 index 0000000..aac49ab --- /dev/null +++ b/slither-202005192059.txt @@ -0,0 +1,181 @@ +pzprv3.1 +slither +44 +63 +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. 0 3 2 2 3 2 2 1 0 3 1 2 0 3 2 3 3 3 2 . . 1 3 2 0 1 1 1 3 1 2 0 2 1 1 2 3 1 0 2 . . 3 3 3 1 1 1 1 1 1 0 2 3 3 3 3 3 3 2 3 . +. 3 . . . . . . . . . . . . . . . . . 0 . . 1 . . . . . . . . . . . . . . . . . 3 . . 0 . . . . . . . . . . . . . . . . . 1 . +. 2 . 3 1 0 . . 3 . . . 2 1 . 3 . 3 . 3 . . 1 . 0 . 3 . . 3 . . 3 2 . . 1 3 . . 1 . . 3 . 3 2 3 . . 3 . . . 3 3 . 1 . 3 . 0 . +. 1 . 1 . . . 1 . 3 . 3 . . . 2 . 3 . 2 . . 1 . 1 . 2 . 2 . 1 . 2 . 2 . 1 . 0 . 2 . . 1 . 1 . . . 3 . 1 . 3 . . . 2 . 3 . 2 . +. 1 . 1 3 2 . 3 2 3 . . 0 . . . 3 . . 2 . . 1 . 3 2 2 . 1 2 2 . 0 1 . . 2 . 3 . 0 . . 1 . 1 3 2 . 1 3 2 . . 0 . . . 3 . . 3 . +. 1 . 3 . . . 3 . 1 . . . 1 . . 1 . . 0 . . 1 . 1 . 1 . 3 . 1 . 2 . 3 . 2 . 2 . 2 . . 3 . 3 . . . 3 . 1 . . . 3 . . 1 . . 3 . +. 1 . 1 3 2 . 3 . 2 . 2 2 . . . 0 . . 3 . . 3 . 2 . 1 . 1 . 1 . 3 . 1 . 2 2 . . 2 . . 3 . 2 2 3 . 2 . 3 . 3 0 . . . 3 . . 1 . +. 1 . . . . . . . . . . . . . . . . . 1 . . 3 . . . . . . . . . . . . . . . . . 3 . . 3 . . . . . . . . . . . . . . . . . 3 . +. 1 1 0 1 1 0 1 1 2 3 1 1 3 1 0 3 1 2 3 . . 1 2 2 2 0 2 1 1 2 2 0 2 3 3 2 1 1 1 3 . . 2 3 2 3 3 3 3 3 2 1 1 1 2 3 1 1 1 0 2 . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. 2 2 0 2 2 0 2 2 2 1 1 1 0 2 2 0 2 3 2 . . 2 3 0 1 0 1 3 0 3 1 2 0 2 3 3 3 3 1 3 . . 0 2 3 2 3 3 3 3 3 2 2 3 2 3 1 2 3 1 1 . +. 1 . . . . . . . . . . . . . . . . . 2 . . 0 . . . . . . . . . . . . . . . . . 2 . . 2 . . . . . . . . . . . . . . . . . 2 . +. 2 . 1 . 3 . . 1 . . 1 1 . . 2 1 . . 1 . . 2 . 2 0 3 . . 3 . . . 3 2 . 3 . 0 . 0 . . 1 . 1 . 2 . . 1 . . 3 1 . . 0 2 . . 1 . +. 2 . 1 . 0 . 1 . 2 . 1 . 2 . 3 . 2 . 1 . . 2 . 3 . . . 1 . 2 . 3 . . . 2 . 1 . 3 . . 1 . 0 . 2 . 0 . 2 . 3 . 2 . 2 . 1 . 2 . +. 0 . 2 2 2 . 1 1 3 . 2 1 . . 1 . 3 . 2 . . 3 . 2 0 3 . 3 1 1 . . 3 . . . 3 . . 2 . . 1 . 1 3 3 . 2 2 0 . 2 2 . . 0 . 3 . 2 . +. 1 . 2 . 2 . 1 . 1 . 3 . 1 . 2 . 1 . 3 . . 1 . 3 . . . 3 . 1 . . . 1 . . 0 . . 3 . . 3 . 2 . 2 . 3 . 2 . 2 . 0 . 3 . 2 . 2 . +. 1 . 2 . 0 . 2 . 3 . 1 . 3 . 2 3 . . 2 . . 3 . 2 0 1 . 1 . 3 . 1 0 . . . 1 . . 3 . . 1 . 1 . 3 . 1 . 1 . 2 . 2 . 2 2 . . 2 . +. 1 . . . . . . . . . . . . . . . . . 2 . . 2 . . . . . . . . . . . . . . . . . 3 . . 2 . . . . . . . . . . . . . . . . . 3 . +. 2 0 2 2 0 2 2 0 1 1 0 3 1 3 1 2 3 2 3 . . 3 1 0 2 2 0 3 1 0 2 0 1 0 2 0 2 3 2 3 . . 0 1 2 3 0 1 1 0 2 2 0 2 3 1 0 1 1 0 3 . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. 3 3 3 2 3 1 0 1 3 2 2 3 0 2 2 1 3 0 3 . . 0 1 1 0 2 2 0 1 1 1 0 2 2 0 2 3 1 2 3 . . 3 1 3 2 2 1 2 1 1 1 1 1 1 0 1 1 3 3 3 . +. 1 . . . . . . . . . . . . . . . . . 2 . . 2 . . . . . . . . . . . . . . . . . 1 . . 2 . . . . . . . . . . . . . . . . . 1 . +. 3 . 1 3 3 . . 2 . . . 0 3 . 2 . 0 . 0 . . 2 . 3 . 1 . . 2 . . 2 1 . . 2 3 . . 1 . . 2 . 3 3 2 . . 1 . . . 3 3 . 3 . 1 . 3 . +. 1 . 3 . . . 2 . 2 . 3 . . . 3 . 3 . 1 . . 1 . 1 . 2 . 2 . 1 . 2 . 3 . 1 . 1 . 0 . . 1 . 0 . . . 3 . 3 . 3 . . . 1 . 1 . 1 . +. 3 . 1 2 3 . 1 3 1 . . 3 . . . 0 . . 1 . . 1 . 1 1 2 . 3 1 3 . 2 2 . . 3 . 3 . 1 . . 3 . 2 2 2 . 3 0 2 . . 3 . . . 3 . . 3 . +. 0 . 3 . . . 0 . 0 . . . 1 . . 2 . . 2 . . 3 . 3 . 2 . 2 . 1 . 1 . 3 . 1 . 2 . 2 . . 3 . 3 . . . 3 . 1 . . . 0 . . 0 . . 0 . +. 2 . 1 1 3 . 1 . 2 . 2 0 . . . 0 . . 3 . . 2 . 1 . 0 . 3 . 1 . 3 . 2 . 3 2 . . 2 . . 3 . 2 3 1 . 1 . 0 . 1 3 . . . 3 . . 3 . +. 1 . . . . . . . . . . . . . . . . . 1 . . 2 . . . . . . . . . . . . . . . . . 3 . . 3 . . . . . . . . . . . . . . . . . 2 . +. 2 1 3 3 3 3 3 1 3 1 1 2 3 0 3 1 0 2 3 . . 0 1 1 3 1 2 3 1 2 2 1 1 0 2 1 2 2 2 3 . . 2 3 3 3 2 0 1 0 1 2 1 0 2 0 1 1 1 2 1 . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. 3 2 1 1 1 1 3 1 2 3 1 1 2 0 1 3 1 2 1 . . 0 3 1 3 1 0 2 0 3 1 3 2 2 0 1 1 3 0 3 . . 1 2 3 2 2 3 2 0 1 2 3 1 1 2 1 0 2 1 2 . +. 0 . . . . . . . . . . . . . . . . . 3 . . 2 . . . . . . . . . . . . . . . . . 2 . . 3 . . . . . . . . . . . . . . . . . 1 . +. 1 . 3 . 0 . . 3 . . 2 1 . . 1 2 . . 0 . . 0 . 1 2 1 . . 1 . . . 2 1 . 3 . 3 . 2 . . 2 . 2 . 1 . . 3 . . 2 3 . . 1 2 . . 1 . +. 3 . 1 . 1 . 2 . 2 . 1 . 2 . 3 . 2 . 1 . . 2 . 1 . . . 0 . 3 . 3 . . . 3 . 1 . 2 . . 1 . 1 . 2 . 1 . 2 . 2 . 2 . 3 . 1 . 3 . +. 1 . 1 1 3 . 3 1 2 . 1 3 . . 2 . 2 . 2 . . 0 . 3 2 1 . 2 3 1 . . 1 . . . 3 . . 1 . . 2 . 2 1 3 . 1 2 1 . 3 1 . . 3 . 2 . 2 . +. 2 . 2 . 2 . 3 . 0 . 2 . 1 . 1 . 1 . 1 . . 2 . 1 . . . 0 . 2 . . . 0 . . 3 . . 3 . . 2 . 1 . 2 . 3 . 3 . 1 . 2 . 1 . 2 . 2 . +. 0 . 1 . 2 . 2 . 1 . 2 . 3 . 2 3 . . 1 . . 1 . 2 3 0 . 3 . 3 . 0 3 . . . 3 . . 2 . . 2 . 2 . 2 . 2 . 2 . 1 . 3 . 2 2 . . 3 . +. 2 . . . . . . . . . . . . . . . . . 0 . . 2 . . . . . . . . . . . . . . . . . 3 . . 2 . . . . . . . . . . . . . . . . . 1 . +. 3 1 3 0 2 2 0 2 2 3 2 1 1 1 1 3 2 2 3 . . 3 3 3 2 0 2 2 1 0 2 2 2 3 2 3 0 2 2 3 . . 3 3 2 1 2 0 1 1 1 2 2 3 1 2 1 3 0 2 3 . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +2 2 1 1 2 1 1 2 2 2 1 1 2 1 2 2 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 +2 2 2 1 2 2 1 2 2 2 2 1 1 1 1 2 1 2 1 2 2 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 2 1 1 1 1 1 1 1 1 2 1 2 1 2 1 2 1 2 +1 2 1 1 1 1 1 1 1 2 1 1 2 1 2 2 2 2 2 2 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 2 2 2 1 1 +1 1 1 2 1 1 1 1 2 2 2 1 2 1 1 1 2 1 1 2 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 2 1 2 1 1 1 2 2 2 1 2 1 2 2 1 1 1 1 +2 2 2 2 1 1 1 1 1 1 2 1 2 1 1 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 1 2 1 1 1 2 2 2 1 1 2 +1 2 2 2 2 1 2 2 1 2 2 2 2 2 1 2 1 1 1 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 2 1 1 1 1 2 1 1 1 1 1 1 2 1 1 2 2 +1 2 2 1 1 1 2 1 1 1 1 1 2 2 1 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 1 2 2 2 1 2 2 2 2 1 2 2 1 1 1 1 1 2 +1 2 2 2 2 1 2 2 1 1 2 1 1 2 1 2 2 2 1 2 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 2 2 2 1 2 2 2 1 2 1 1 1 2 2 1 2 2 2 2 +1 2 2 2 1 1 2 1 1 2 2 2 1 1 1 1 2 2 1 1 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 2 2 1 1 1 1 1 1 1 2 2 1 2 2 2 2 2 1 2 1 +1 2 2 2 2 2 2 2 2 2 1 2 2 2 1 1 1 2 2 1 2 0 0 0 0 0 0 0 0 0 0 2 2 2 1 2 1 0 0 0 0 0 1 1 2 1 2 1 2 1 2 1 1 1 1 2 1 1 1 1 1 1 1 +1 2 1 2 2 2 2 2 2 1 1 2 2 1 1 1 2 2 2 2 2 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 2 1 1 1 1 2 2 2 2 2 2 1 1 1 2 2 1 1 1 1 2 1 +1 1 1 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 1 1 1 1 1 2 1 1 2 1 2 2 2 2 2 2 1 1 1 2 1 1 1 2 2 2 2 2 2 2 2 2 2 2 1 1 2 2 1 +2 1 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 1 1 1 1 2 2 2 1 1 1 1 2 1 2 1 2 2 1 2 2 2 2 1 2 1 2 1 2 1 1 2 1 1 2 2 1 2 2 1 +1 1 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 1 2 1 1 1 2 1 1 2 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 1 +2 1 2 2 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 2 2 2 1 1 2 1 2 2 2 1 2 2 1 1 1 1 1 1 2 2 2 2 1 1 1 1 2 1 2 2 2 2 2 2 1 1 1 1 +2 1 2 2 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 2 1 1 1 1 1 2 1 1 1 2 1 1 1 2 1 2 1 2 2 2 2 2 1 1 1 2 1 1 2 1 1 2 1 1 1 1 2 +1 1 1 1 1 2 2 1 1 2 0 0 0 0 0 0 0 0 0 1 0 1 2 2 2 2 2 1 2 2 2 2 2 2 1 2 1 2 1 2 2 2 2 2 2 2 1 2 1 1 2 2 2 2 2 1 2 2 2 2 1 2 2 +1 1 2 2 1 1 2 1 1 1 1 0 0 0 0 1 0 0 0 2 0 1 1 1 1 2 1 1 1 2 2 2 1 1 1 2 2 2 2 2 1 1 2 1 2 2 1 1 1 2 2 2 1 1 1 1 1 2 1 1 1 2 1 +1 1 1 2 1 1 1 1 2 1 2 2 0 0 2 0 1 2 0 1 0 2 1 2 2 2 2 2 2 2 1 1 1 1 1 1 1 2 2 2 2 1 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 1 1 2 2 2 1 +2 2 2 2 2 1 2 2 2 2 2 2 1 1 2 2 2 2 2 1 1 2 2 2 1 2 2 1 2 2 2 1 2 1 2 1 2 2 2 2 1 1 1 2 2 1 1 2 1 1 2 1 1 2 2 2 2 2 2 2 2 1 1 +1 2 2 2 1 1 1 2 2 2 2 2 2 1 1 2 2 1 2 2 1 2 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 1 2 2 1 2 2 2 1 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 1 +1 1 2 1 1 1 1 1 2 1 1 2 1 1 2 2 1 1 1 1 1 2 2 1 1 2 2 1 2 2 2 1 2 2 2 1 2 1 1 1 1 1 1 2 2 1 1 2 2 2 2 1 1 2 1 1 2 2 1 1 2 1 1 +1 1 1 1 1 2 2 2 2 1 1 2 2 1 2 2 2 2 1 2 2 2 0 0 0 0 0 0 0 0 0 1 1 2 2 1 0 0 0 0 0 2 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 +1 2 1 2 1 1 2 2 2 2 1 2 1 1 1 2 2 1 1 1 2 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 2 2 1 2 2 2 1 1 1 1 1 1 1 1 1 1 2 1 2 1 +2 2 2 2 2 2 2 2 1 1 1 2 2 1 1 1 2 2 1 2 2 0 0 0 0 0 0 0 0 0 0 0 1 2 2 1 0 0 0 0 0 0 1 1 2 2 2 1 2 2 2 2 2 2 2 2 1 1 1 2 2 2 2 +2 1 2 2 1 2 1 2 2 1 2 2 2 2 1 2 2 2 2 2 2 0 2 0 2 0 2 0 1 0 0 0 0 2 0 0 0 0 0 0 0 2 2 1 2 1 2 1 2 1 1 1 2 2 1 2 1 2 2 2 2 1 2 +1 1 1 2 1 1 1 1 2 1 2 1 2 1 1 2 1 2 1 2 2 2 2 1 1 1 2 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 2 2 1 2 2 1 1 1 1 1 1 1 1 1 1 +1 2 1 1 1 2 1 1 2 1 1 1 2 1 1 1 1 1 1 2 2 2 2 1 1 1 2 1 2 2 1 0 0 0 0 0 0 0 0 0 0 0 2 2 1 1 2 2 2 1 1 1 2 2 2 1 1 1 2 1 1 2 1 +2 2 2 1 2 2 1 1 1 1 1 1 1 1 2 2 1 2 2 2 1 1 2 1 2 1 2 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 2 2 1 2 2 1 1 2 1 1 1 1 2 2 2 2 2 2 +1 2 2 2 2 1 1 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 1 1 2 2 2 2 1 2 0 0 0 0 0 0 0 0 0 0 2 0 2 2 1 1 2 1 1 1 1 1 1 1 2 1 1 1 2 1 1 2 1 +1 1 1 2 2 2 2 2 1 2 2 2 1 1 2 1 1 1 2 2 2 2 2 1 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 1 0 2 1 1 1 1 1 2 1 2 1 1 1 2 1 2 1 1 1 1 1 1 +2 1 1 2 1 2 1 2 1 1 2 2 1 2 2 2 1 1 1 2 1 2 2 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 1 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 +2 2 1 1 1 1 1 1 1 2 2 2 1 1 2 1 1 1 1 1 1 2 2 2 2 0 0 0 2 0 0 0 0 0 0 0 1 0 0 1 1 1 1 2 2 2 2 2 2 2 2 2 1 2 2 1 2 2 2 2 1 2 0 +2 2 2 2 2 2 2 2 1 2 2 2 2 1 2 2 2 1 1 2 2 2 1 2 2 1 1 1 2 1 2 2 1 1 2 2 1 2 2 1 2 2 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 +2 1 2 2 2 2 2 1 1 1 1 2 2 2 2 2 1 1 2 2 2 1 1 1 2 2 1 1 1 1 1 2 2 1 2 2 2 2 1 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 1 1 1 1 1 2 2 2 2 2 2 1 1 2 2 2 1 2 1 2 2 1 2 2 1 1 1 2 1 2 2 1 1 1 2 2 2 2 1 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 1 1 2 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 2 2 2 2 2 2 1 1 1 2 1 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 2 1 2 2 1 1 1 1 2 2 2 2 2 2 1 2 1 1 1 2 2 1 2 2 2 1 2 2 2 1 2 1 2 1 1 2 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 2 2 2 2 1 2 2 1 1 2 2 1 1 2 2 2 2 1 1 2 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 2 1 1 2 2 2 1 1 1 1 2 2 1 1 1 1 2 2 2 2 2 1 2 2 2 1 2 2 2 2 2 2 1 1 1 1 2 2 2 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2 2 2 1 1 1 2 2 2 1 1 1 2 1 2 1 2 2 2 2 1 1 1 1 2 1 1 1 2 1 1 2 2 2 1 1 1 1 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2 2 1 1 2 1 1 1 2 1 1 1 2 2 2 1 1 1 2 2 2 1 2 2 2 2 1 1 1 1 2 2 2 1 1 1 1 2 2 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2 1 1 2 2 2 1 1 1 1 2 1 1 1 1 1 2 1 1 2 1 1 2 1 2 1 1 1 2 2 2 2 1 1 2 1 2 2 2 1 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2 2 1 1 2 2 2 1 2 2 2 2 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 2 2 2 2 1 1 2 2 1 1 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 1 -1 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1 1 0 0 0 +0 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 0 1 1 1 1 1 -1 1 -1 1 0 -1 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 -1 0 0 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 0 +1 1 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 -1 -1 -1 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 0 1 -1 1 +1 -1 -1 1 1 -1 -1 0 1 0 0 1 1 1 -1 0 1 1 0 1 1 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 -1 0 1 -1 0 1 1 1 1 -1 1 0 -1 -1 1 +0 -1 -1 -1 1 0 0 -1 -1 0 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 1 0 0 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 0 1 0 0 1 -1 1 0 +1 1 0 0 0 1 1 0 1 1 0 0 -1 -1 1 1 1 0 0 1 -1 0 0 0 1 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 1 -1 -1 0 -1 -1 -1 1 1 -1 -1 -1 1 1 0 -1 -1 0 0 1 1 0 1 -1 0 +1 1 -1 1 0 0 1 1 0 -1 -1 -1 1 -1 1 1 -1 -1 0 -1 -1 0 -1 -1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 -1 -1 1 0 1 0 1 1 -1 -1 1 1 -1 -1 0 1 1 0 1 -1 -1 0 -1 1 0 +1 1 -1 -1 -1 1 1 0 1 0 1 1 -1 1 1 1 -1 -1 1 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 -1 -1 -1 0 0 1 -1 -1 1 1 0 -1 1 1 1 -1 -1 1 0 1 1 -1 -1 -1 0 +1 1 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 1 -1 1 -1 -1 -1 -1 -1 -1 1 0 1 1 -1 -1 -1 -1 1 1 1 1 +1 1 -1 -1 -1 -1 -1 -1 -1 0 1 1 -1 -1 1 -1 -1 1 -1 1 1 0 -1 -1 0 0 -1 -1 0 0 0 0 -1 -1 1 1 1 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 +1 1 1 1 -1 -1 -1 -1 -1 1 0 1 0 1 0 0 1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 0 0 1 0 1 0 0 0 1 1 1 +1 0 0 1 -1 -1 1 0 0 0 0 0 0 0 0 -1 0 0 -1 0 0 0 0 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 0 1 -1 -1 -1 -1 0 0 -1 0 0 0 1 0 1 0 1 1 +0 1 1 -1 -1 1 -1 -1 0 0 0 0 0 -1 -1 1 -1 -1 0 1 0 0 1 1 0 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 0 1 1 1 1 1 1 1 -1 1 1 0 1 0 1 1 0 1 1 +1 -1 1 0 1 -1 -1 0 0 0 0 0 0 0 0 -1 0 0 -1 0 0 0 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 0 1 1 -1 0 0 -1 -1 -1 -1 -1 -1 -1 0 1 0 -1 0 0 0 1 1 +0 1 1 -1 1 1 1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 -1 -1 0 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 0 1 0 0 -1 1 -1 0 -1 1 1 1 -1 -1 -1 -1 -1 1 0 0 0 1 +0 1 1 0 0 -1 -1 1 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 -1 1 1 -1 -1 -1 -1 1 1 0 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 0 -1 0 1 0 +1 -1 -1 0 0 1 0 1 -1 1 0 0 -1 -1 0 0 0 0 0 0 0 0 1 -1 -1 -1 0 1 1 0 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 0 -1 -1 -1 1 1 1 -1 1 -1 -1 0 -1 1 1 -1 -1 0 1 1 0 0 +1 0 1 0 1 0 1 1 -1 -1 -1 0 1 -1 -1 0 0 0 0 0 0 0 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 +1 0 0 1 1 -1 -1 0 1 1 1 -1 0 1 0 0 0 1 0 0 0 0 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 0 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 +0 0 -1 -1 -1 1 1 -1 0 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 0 1 -1 1 0 1 1 0 1 1 0 1 0 -1 -1 0 -1 -1 -1 1 -1 1 +1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 0 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 0 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 0 -1 0 -1 -1 0 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 +1 -1 1 1 -1 -1 0 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 0 1 -1 1 0 1 -1 0 0 1 0 1 1 0 1 0 1 0 1 1 -1 1 +1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 0 0 0 0 0 0 0 0 0 0 -1 1 0 1 0 -1 0 0 -1 0 1 -1 1 1 0 0 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 0 0 -1 -1 1 +1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 0 -1 -1 0 -1 -1 0 -1 -1 0 0 -1 -1 0 -1 -1 0 1 -1 0 1 0 1 0 1 1 0 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 +-1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 -1 0 0 -1 0 0 -1 1 -1 -1 1 1 0 -1 0 0 0 -1 -1 1 -1 -1 1 -1 -1 -1 -1 +-1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 0 -1 -1 1 1 -1 +1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 0 0 1 0 -1 1 1 -1 1 0 -1 0 0 0 0 0 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 0 -1 -1 -1 -1 -1 -1 -1 -1 1 +1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 0 1 -1 0 0 1 -1 -1 1 1 1 -1 1 0 0 0 0 0 0 1 0 0 0 0 0 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 0 1 -1 -1 1 1 -1 1 1 1 +-1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 0 1 1 1 1 1 1 -1 1 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 -1 1 -1 1 1 -1 1 -1 1 1 0 -1 -1 1 -1 -1 0 -1 -1 -1 +1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 0 -1 -1 1 0 -1 -1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 0 -1 1 1 0 1 1 1 +1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 0 0 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 -1 -1 -1 1 1 1 1 0 0 1 1 1 1 0 0 0 -1 -1 1 +-1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 0 1 -1 -1 1 1 1 -1 -1 -1 1 0 0 0 0 -1 0 0 0 -1 -1 0 0 0 0 0 0 0 -1 1 1 1 1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 +-1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 1 0 0 0 0 0 0 0 0 1 1 -1 1 1 0 0 0 1 1 0 0 +0 -1 -1 0 0 0 0 0 1 1 -1 0 0 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 1 1 -1 -1 -1 -1 1 -1 -1 0 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 0 1 0 1 -1 0 0 0 1 -1 1 1 -1 -1 -1 1 0 0 1 0 0 0 0 0 0 1 0 -1 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 +1 -1 -1 0 0 0 1 0 0 0 -1 0 1 0 1 0 0 1 1 1 1 0 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 0 1 -1 -1 -1 1 1 -1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 0 1 -1 1 -1 1 -1 -1 -1 0 0 1 -1 -1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 +1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 1 0 -1 -1 1 1 0 1 -1 1 -1 1 0 1 0 0 -1 1 -1 1 1 -1 -1 0 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 +1 1 1 -1 1 -1 0 1 0 -1 -1 1 0 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 0 0 -1 1 -1 -1 -1 1 -1 -1 1 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 -1 -1 0 0 0 0 0 +0 -1 -1 1 -1 -1 1 -1 -1 1 -1 0 1 1 1 1 1 0 0 -1 1 0 -1 -1 1 1 0 -1 1 1 0 1 -1 0 1 -1 -1 -1 1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 -1 0 0 0 0 +0 -1 1 -1 1 1 0 0 1 1 0 0 1 0 0 1 0 0 1 -1 -1 1 1 -1 0 0 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 0 1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 -1 0 0 +0 1 -1 1 -1 -1 1 -1 -1 0 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 0 -1 1 1 -1 0 1 1 1 0 0 -1 -1 0 0 0 0 0 0 0 -1 1 -1 -1 0 1 0 +0 -1 1 -1 1 0 0 1 1 0 0 0 1 0 0 0 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 0 1 -1 1 -1 1 1 -1 -1 -1 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 -1 0 0 +0 0 1 1 0 1 1 0 0 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 +0 -1 1 0 -1 1 0 -1 -1 -1 1 -1 1 -1 1 0 0 1 0 1 1 0 -1 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 0 1 0 1 0 1 0 -1 1 0 +1 -1 1 0 1 1 0 1 1 -1 1 -1 1 -1 1 0 1 0 1 -1 0 0 -1 0 0 -1 0 0 0 1 0 0 -1 0 0 0 0 0 0 -1 1 0 1 -1 1 -1 -1 1 1 1 1 1 -1 1 0 1 0 1 0 1 0 -1 1 +0 1 0 1 -1 -1 0 0 1 0 1 -1 0 -1 1 1 -1 1 1 -1 1 0 -1 -1 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 -1 1 -1 -1 -1 1 1 1 0 1 0 1 -1 1 0 0 1 1 -1 0 +1 1 1 -1 -1 -1 0 -1 1 1 0 0 0 -1 0 1 -1 1 0 1 0 0 0 0 -1 0 0 0 0 0 0 -1 0 -1 0 0 0 1 -1 0 0 0 -1 1 -1 1 -1 1 -1 1 1 0 1 -1 -1 1 0 -1 -1 1 -1 -1 1 +1 -1 0 -1 1 0 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 -1 1 -1 0 -1 0 -1 -1 1 -1 -1 1 1 -1 0 1 -1 0 0 1 0 1 -1 1 -1 +0 -1 0 1 1 0 -1 1 -1 1 1 1 -1 -1 -1 0 1 1 1 -1 0 0 -1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 0 1 0 -1 1 -1 +0 -1 0 1 1 0 -1 1 -1 -1 1 0 1 -1 0 0 -1 0 1 -1 1 0 1 0 0 0 0 0 0 0 0 -1 0 -1 0 0 0 0 1 1 1 -1 -1 1 -1 1 -1 1 0 1 -1 1 -1 1 -1 1 0 1 -1 1 1 1 -1 +0 0 0 -1 1 0 0 1 0 1 0 1 -1 1 0 1 -1 0 0 1 0 -1 1 -1 0 0 0 0 0 0 0 0 1 0 -1 -1 0 0 0 0 1 0 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 0 -1 1 -1 1 -1 1 +0 0 0 -1 1 1 -1 1 1 0 1 -1 1 1 0 -1 1 -1 1 -1 1 0 1 0 0 0 -1 0 0 0 0 0 -1 0 0 0 0 0 0 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 0 +0 -1 1 -1 -1 -1 -1 -1 -1 1 0 -1 -1 1 0 -1 1 -1 -1 1 -1 0 -1 0 0 0 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 0 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 0 +0 1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 1 -1 1 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 +1 0 1 -1 -1 1 -1 0 0 0 0 0 0 -1 0 0 -1 0 0 0 0 0 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 -1 0 +1 0 0 -1 1 -1 -1 0 0 0 0 0 0 -1 0 0 -1 0 0 0 0 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 0 1 0 1 0 0 1 0 1 0 0 1 0 -1 0 +1 0 0 0 -1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 0 0 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 0 -1 -1 1 1 1 0 +0 0 0 -1 1 0 1 -1 -1 0 0 -1 0 0 0 0 0 0 0 0 0 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 0 1 0 -1 0 -1 0 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 0 0 1 +1 -1 1 1 1 -1 0 0 -1 0 1 0 1 0 0 0 0 0 0 0 0 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 0 +0 -1 1 1 0 1 0 0 0 1 0 1 -1 -1 0 0 0 0 0 1 0 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 0 1 1 -1 0 1 +0 -1 1 0 0 -1 1 0 1 -1 1 0 -1 1 0 0 0 0 -1 1 -1 1 0 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 0 0 +1 1 1 0 1 -1 1 1 -1 1 -1 -1 0 0 -1 0 1 -1 0 -1 0 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 0 1 1 -1 0 0 0 -1 1 -1 0 -1 -1 1 1 1 1 -1 -1 1 0 +1 -1 -1 -1 1 -1 1 0 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 0 1 -1 -1 -1 -1 -1 1 -1 +-1 1 -1 1 -1 -1 0 1 -1 1 1 -1 1 -1 1 -1 1 0 1 1 -1 -1 1 -1 -1 1 1 0 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 0 -1 1 1 -1 1 0 -1 -1 1 1 -1 1 -1 +-1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 0 0 0 0 0 0 0 0 0 -1 1 0 0 -1 0 0 0 0 0 1 0 1 -1 0 0 1 -1 1 1 0 0 1 0 0 1 -1 0 0 1 0 0 +-1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 0 -1 0 0 -1 0 0 -1 0 0 -1 -1 1 1 -1 0 0 -1 0 0 0 -1 1 0 0 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 +1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 0 -1 0 0 -1 0 0 -1 0 0 0 -1 1 1 -1 0 0 -1 0 0 0 -1 1 0 1 0 1 0 1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 +-1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 -1 1 -1 -1 -1 1 1 1 0 -1 1 -1 -1 1 1 -1 -1 1 -1 +1 -1 1 0 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 0 1 -1 -1 0 -1 0 1 0 0 0 -1 0 -1 0 0 0 0 0 0 0 0 0 -1 0 1 -1 1 -1 1 0 -1 1 -1 1 -1 1 0 1 -1 1 1 1 1 0 1 +-1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 0 0 0 -1 -1 -1 -1 1 -1 0 0 0 0 0 0 0 0 0 0 -1 0 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 0 +1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 0 -1 1 -1 0 -1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 0 1 0 1 1 0 1 +1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 0 1 -1 1 -1 -1 1 0 -1 1 -1 1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 0 1 1 0 1 +-1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 0 -1 -1 1 -1 0 0 0 0 0 0 0 0 0 0 1 0 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 0 0 1 0 1 0 0 1 -1 +1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 0 1 0 0 1 0 0 0 0 0 -1 0 0 0 0 -1 1 -1 0 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 +-1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 0 0 0 0 1 -1 0 0 0 0 -1 0 0 0 0 0 1 0 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 0 0 0 1 -1 0 +0 0 1 1 1 1 1 1 0 0 0 0 1 0 -1 1 1 -1 -1 1 1 -1 1 -1 0 0 0 0 -1 0 0 0 0 0 0 0 -1 0 0 -1 1 1 -1 0 0 0 0 0 0 0 0 0 -1 0 0 -1 0 0 0 0 -1 0 0 +-1 1 -1 0 0 -1 0 1 0 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 0 1 -1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 -1 0 0 0 0 +1 -1 1 1 1 1 0 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 0 1 -1 1 0 1 -1 -1 1 -1 1 0 1 -1 1 -1 -1 -1 1 0 1 -1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 -1 0 0 0 0 +0 -1 0 1 0 -1 1 0 1 -1 1 1 -1 0 1 1 1 -1 1 -1 1 1 0 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 +0 1 0 0 1 -1 0 1 0 -1 1 1 1 1 1 0 1 -1 -1 -1 1 1 -1 1 -1 -1 0 1 -1 -1 1 -1 1 0 -1 -1 1 -1 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 +0 0 1 -1 -1 0 1 1 -1 1 -1 -1 1 1 0 1 0 1 -1 -1 -1 1 0 1 1 -1 -1 1 -1 1 -1 1 0 1 -1 -1 1 1 -1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 -1 1 -1 0 0 0 0 +0 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 +1 -1 1 -1 1 1 -1 1 1 -1 0 1 0 0 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 0 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 -1 -1 1 0 0 0 0 +-1 -1 1 0 1 -1 1 1 0 -1 0 -1 0 1 -1 -1 1 1 0 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 +-1 1 -1 1 -1 1 0 -1 1 -1 1 0 1 1 1 -1 1 0 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 0 1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 1 -1 0 0 0 +-1 1 -1 1 -1 0 1 -1 1 1 0 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 1 -1 0 0 0 +0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/slither_blank.txt b/slither_blank.txt new file mode 100644 index 0000000..4e81040 --- /dev/null +++ b/slither_blank.txt @@ -0,0 +1,181 @@ +pzprv3.1 +slither +44 +63 +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. 0 3 2 2 3 2 2 1 0 3 1 2 0 3 2 3 3 3 2 . . 1 3 2 0 1 1 1 3 1 2 0 2 1 1 2 3 1 0 2 . . 3 3 3 1 1 1 1 1 1 0 2 3 3 3 3 3 3 2 3 . +. 3 . . . . . . . . . . . . . . . . . 0 . . 1 . . . . . . . . . . . . . . . . . 3 . . 0 . . . . . . . . . . . . . . . . . 1 . +. 2 . 3 1 0 . . 3 . . . 2 1 . 3 . 3 . 3 . . 1 . 0 . 3 . . 3 . . 3 2 . . 1 3 . . 1 . . 3 . 3 2 3 . . 3 . . . 3 3 . 1 . 3 . 0 . +. 1 . 1 . . . 1 . 3 . 3 . . . 2 . 3 . 2 . . 1 . 1 . 2 . 2 . 1 . 2 . 2 . 1 . 0 . 2 . . 1 . 1 . . . 3 . 1 . 3 . . . 2 . 3 . 2 . +. 1 . 1 3 2 . 3 2 3 . . 0 . . . 3 . . 2 . . 1 . 3 2 2 . 1 2 2 . 0 1 . . 2 . 3 . 0 . . 1 . 1 3 2 . 1 3 2 . . 0 . . . 3 . . 3 . +. 1 . 3 . . . 3 . 1 . . . 1 . . 1 . . 0 . . 1 . 1 . 1 . 3 . 1 . 2 . 3 . 2 . 2 . 2 . . 3 . 3 . . . 3 . 1 . . . 3 . . 1 . . 3 . +. 1 . 1 3 2 . 3 . 2 . 2 2 . . . 0 . . 3 . . 3 . 2 . 1 . 1 . 1 . 3 . 1 . 2 2 . . 2 . . 3 . 2 2 3 . 2 . 3 . 3 0 . . . 3 . . 1 . +. 1 . . . . . . . . . . . . . . . . . 1 . . 3 . . . . . . . . . . . . . . . . . 3 . . 3 . . . . . . . . . . . . . . . . . 3 . +. 1 1 0 1 1 0 1 1 2 3 1 1 3 1 0 3 1 2 3 . . 1 2 2 2 0 2 1 1 2 2 0 2 3 3 2 1 1 1 3 . . 2 3 2 3 3 3 3 3 2 1 1 1 2 3 1 1 1 0 2 . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. 2 2 0 2 2 0 2 2 2 1 1 1 0 2 2 0 2 3 2 . . 2 3 0 1 0 1 3 0 3 1 2 0 2 3 3 3 3 1 3 . . 0 2 3 2 3 3 3 3 3 2 2 3 2 3 1 2 3 1 1 . +. 1 . . . . . . . . . . . . . . . . . 2 . . 0 . . . . . . . . . . . . . . . . . 2 . . 2 . . . . . . . . . . . . . . . . . 2 . +. 2 . 1 . 3 . . 1 . . 1 1 . . 2 1 . . 1 . . 2 . 2 0 3 . . 3 . . . 3 2 . 3 . 0 . 0 . . 1 . 1 . 2 . . 1 . . 3 1 . . 0 2 . . 1 . +. 2 . 1 . 0 . 1 . 2 . 1 . 2 . 3 . 2 . 1 . . 2 . 3 . . . 1 . 2 . 3 . . . 2 . 1 . 3 . . 1 . 0 . 2 . 0 . 2 . 3 . 2 . 2 . 1 . 2 . +. 0 . 2 2 2 . 1 1 3 . 2 1 . . 1 . 3 . 2 . . 3 . 2 0 3 . 3 1 1 . . 3 . . . 3 . . 2 . . 1 . 1 3 3 . 2 2 0 . 2 2 . . 0 . 3 . 2 . +. 1 . 2 . 2 . 1 . 1 . 3 . 1 . 2 . 1 . 3 . . 1 . 3 . . . 3 . 1 . . . 1 . . 0 . . 3 . . 3 . 2 . 2 . 3 . 2 . 2 . 0 . 3 . 2 . 2 . +. 1 . 2 . 0 . 2 . 3 . 1 . 3 . 2 3 . . 2 . . 3 . 2 0 1 . 1 . 3 . 1 0 . . . 1 . . 3 . . 1 . 1 . 3 . 1 . 1 . 2 . 2 . 2 2 . . 2 . +. 1 . . . . . . . . . . . . . . . . . 2 . . 2 . . . . . . . . . . . . . . . . . 3 . . 2 . . . . . . . . . . . . . . . . . 3 . +. 2 0 2 2 0 2 2 0 1 1 0 3 1 3 1 2 3 2 3 . . 3 1 0 2 2 0 3 1 0 2 0 1 0 2 0 2 3 2 3 . . 0 1 2 3 0 1 1 0 2 2 0 2 3 1 0 1 1 0 3 . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. 3 3 3 2 3 1 0 1 3 2 2 3 0 2 2 1 3 0 3 . . 0 1 1 0 2 2 0 1 1 1 0 2 2 0 2 3 1 2 3 . . 3 1 3 2 2 1 2 1 1 1 1 1 1 0 1 1 3 3 3 . +. 1 . . . . . . . . . . . . . . . . . 2 . . 2 . . . . . . . . . . . . . . . . . 1 . . 2 . . . . . . . . . . . . . . . . . 1 . +. 3 . 1 3 3 . . 2 . . . 0 3 . 2 . 0 . 0 . . 2 . 3 . 1 . . 2 . . 2 1 . . 2 3 . . 1 . . 2 . 3 3 2 . . 1 . . . 3 3 . 3 . 1 . 3 . +. 1 . 3 . . . 2 . 2 . 3 . . . 3 . 3 . 1 . . 1 . 1 . 2 . 2 . 1 . 2 . 3 . 1 . 1 . 0 . . 1 . 0 . . . 3 . 3 . 3 . . . 1 . 1 . 1 . +. 3 . 1 2 3 . 1 3 1 . . 3 . . . 0 . . 1 . . 1 . 1 1 2 . 3 1 3 . 2 2 . . 3 . 3 . 1 . . 3 . 2 2 2 . 3 0 2 . . 3 . . . 3 . . 3 . +. 0 . 3 . . . 0 . 0 . . . 1 . . 2 . . 2 . . 3 . 3 . 2 . 2 . 1 . 1 . 3 . 1 . 2 . 2 . . 3 . 3 . . . 3 . 1 . . . 0 . . 0 . . 0 . +. 2 . 1 1 3 . 1 . 2 . 2 0 . . . 0 . . 3 . . 2 . 1 . 0 . 3 . 1 . 3 . 2 . 3 2 . . 2 . . 3 . 2 3 1 . 1 . 0 . 1 3 . . . 3 . . 3 . +. 1 . . . . . . . . . . . . . . . . . 1 . . 2 . . . . . . . . . . . . . . . . . 3 . . 3 . . . . . . . . . . . . . . . . . 2 . +. 2 1 3 3 3 3 3 1 3 1 1 2 3 0 3 1 0 2 3 . . 0 1 1 3 1 2 3 1 2 2 1 1 0 2 1 2 2 2 3 . . 2 3 3 3 2 0 1 0 1 2 1 0 2 0 1 1 1 2 1 . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +. 3 2 1 1 1 1 3 1 2 3 1 1 2 0 1 3 1 2 1 . . 0 3 1 3 1 0 2 0 3 1 3 2 2 0 1 1 3 0 3 . . 1 2 3 2 2 3 2 0 1 2 3 1 1 2 1 0 2 1 2 . +. 0 . . . . . . . . . . . . . . . . . 3 . . 2 . . . . . . . . . . . . . . . . . 2 . . 3 . . . . . . . . . . . . . . . . . 1 . +. 1 . 3 . 0 . . 3 . . 2 1 . . 1 2 . . 0 . . 0 . 1 2 1 . . 1 . . . 2 1 . 3 . 3 . 2 . . 2 . 2 . 1 . . 3 . . 2 3 . . 1 2 . . 1 . +. 3 . 1 . 1 . 2 . 2 . 1 . 2 . 3 . 2 . 1 . . 2 . 1 . . . 0 . 3 . 3 . . . 3 . 1 . 2 . . 1 . 1 . 2 . 1 . 2 . 2 . 2 . 3 . 1 . 3 . +. 1 . 1 1 3 . 3 1 2 . 1 3 . . 2 . 2 . 2 . . 0 . 3 2 1 . 2 3 1 . . 1 . . . 3 . . 1 . . 2 . 2 1 3 . 1 2 1 . 3 1 . . 3 . 2 . 2 . +. 2 . 2 . 2 . 3 . 0 . 2 . 1 . 1 . 1 . 1 . . 2 . 1 . . . 0 . 2 . . . 0 . . 3 . . 3 . . 2 . 1 . 2 . 3 . 3 . 1 . 2 . 1 . 2 . 2 . +. 0 . 1 . 2 . 2 . 1 . 2 . 3 . 2 3 . . 1 . . 1 . 2 3 0 . 3 . 3 . 0 3 . . . 3 . . 2 . . 2 . 2 . 2 . 2 . 2 . 1 . 3 . 2 2 . . 3 . +. 2 . . . . . . . . . . . . . . . . . 0 . . 2 . . . . . . . . . . . . . . . . . 3 . . 2 . . . . . . . . . . . . . . . . . 1 . +. 3 1 3 0 2 2 0 2 2 3 2 1 1 1 1 3 2 2 3 . . 3 3 3 2 0 2 2 1 0 2 2 2 3 2 3 0 2 2 3 . . 3 3 2 1 2 0 1 1 1 2 2 3 1 2 1 3 0 2 3 . +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0