diff --git a/.gitignore b/.gitignore index 26710f7..ce28c2c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ # Steffo's random assets folder available-assets/ + +# macOS shenanigans +.DS_Store diff --git a/Utils.gd b/Utils.gd new file mode 100644 index 0000000..9ab84cf --- /dev/null +++ b/Utils.gd @@ -0,0 +1,52 @@ +extends Node + +enum TERNARY { + TRUE, + FALSE, + NONE +} + +static func bool_to_sign(b: bool): + return 1 if b else -1 + +static func map(v: float, i_start: float, i_end: float, f_start: float, f_end: float, clamped := false) -> float: + var output := remap(v, i_start, i_end, f_start, f_end) + return clamp(output, f_start, f_end) if clamped else output + +static func vec3_horizontal(v: Vector3) -> Vector2: + return vec3_remove_axis(v, Vector3.AXIS_Y) + +static func vec3_remove_axis(v: Vector3, axis : int = Vector3.AXIS_Y) -> Vector2: + match axis: + Vector3.AXIS_X: return Vector2(v.y, v.z) + Vector3.AXIS_Y: return Vector2(v.x, v.z) + Vector3.AXIS_Z: return Vector2(v.x, v.y) + return Vector2.ZERO + +static func vec3_deg2rad(v: Vector3): + return Vector3(deg_to_rad(v.x), deg_to_rad(v.y), deg_to_rad(v.z)) + +static func vec2_deg2rad(v: Vector2): + return Vector2(deg_to_rad(v.x), deg_to_rad(v.y)) + +#static func round_vec2(v : Vector2, digits : int = 3): +# return Vector2(stepify(v.x, pow(10, -digits)), stepify(v.y, pow(10, -digits))) + +static func get_global_pos(obj: Node3D) -> Vector3: + return obj.global_transform.origin + +static func get_dir_vector(obj: Node3D, axis := Vector3.AXIS_Z) -> Vector3: + match axis: + Vector3.AXIS_X: return obj.transform.basis.x + Vector3.AXIS_Y: return obj.transform.basis.y + Vector3.AXIS_Z: return obj.transform.basis.z + return Vector3.ZERO + +static func delete_children(node): + for n in node.get_children(): + n.queue_free() + +static func log_line(obj: Node, msg: String): + var time = Time.get_time_dict_from_system() + var time_str = "%02d:%02d:%02d" % [time.hour, time.minute, time.second] + print("@%s [%s]: %s" % [time_str, obj.name, msg]) diff --git a/island/Island.tscn b/island/Island.tscn index 4b3b76b..385b3bb 100644 --- a/island/Island.tscn +++ b/island/Island.tscn @@ -1,7 +1,22 @@ -[gd_scene load_steps=8 format=3 uid="uid://bg88gc1w1gw5m"] +[gd_scene load_steps=11 format=3 uid="uid://bg88gc1w1gw5m"] [ext_resource type="Texture2D" uid="uid://bdoifsf6k0qb8" path="res://assets/water_tile.png" id="1_w6ara"] [ext_resource type="ArrayMesh" uid="uid://c8knvy5ras8jo" path="res://assets/island_model/island.obj" id="2_r00hx"] +[ext_resource type="PackedScene" uid="uid://dnrl0uycbw3lp" path="res://player/Player.tscn" id="3_5378m"] + +[sub_resource type="GDScript" id="GDScript_78lo3"] +script/source = "extends Node3D + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + $Island.get_active_material(0).set(\"texture_filter\", BaseMaterial3D.TextureFilter.TEXTURE_FILTER_NEAREST) + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass +" [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i4xeb"] shading_mode = 0 @@ -17,6 +32,9 @@ proximity_fade_distance = 30.89 material = SubResource("StandardMaterial3D_i4xeb") size = Vector2(1000, 1000) +[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_droeh"] +data = PackedVector3Array(-1, 3, 0, 0, 3, 1, 0, 3, 0, -1, 3, 1, 0, 3, 1, -1, 3, 0, 4, 2, 15, 3, 2, 14, 4, 2, 14, 3, 2, 15, 3, 2, 14, 4, 2, 15, 5, 2, 15, 4, 2, 14, 5, 2, 14, 4, 2, 15, 4, 2, 14, 5, 2, 15, 5, 2, 14, 4, 2, 13, 5, 2, 13, 4, 2, 14, 4, 2, 13, 5, 2, 14, 4, 2, 14, 3, 2, 13, 4, 2, 13, 3, 2, 14, 3, 2, 13, 4, 2, 14, 5, 2, 13, 4, 2, 12, 5, 2, 12, 4, 2, 13, 4, 2, 12, 5, 2, 13, 5, 2, 12, 4, 2, 11, 5, 2, 11, 4, 2, 12, 4, 2, 11, 5, 2, 12, 5, 2, 11, 4, 2, 10, 5, 2, 10, 4, 2, 11, 4, 2, 10, 5, 2, 11, 5, 2, 10, 4, 2, 9, 5, 2, 9, 4, 2, 10, 4, 2, 9, 5, 2, 10, 4, 2, 13, 3, 2, 12, 4, 2, 12, 3, 2, 13, 3, 2, 12, 4, 2, 13, 4, 2, 12, 3, 2, 11, 4, 2, 11, 3, 2, 12, 3, 2, 11, 4, 2, 12, 4, 2, 10, 3, 2, 9, 4, 2, 9, 3, 2, 10, 3, 2, 9, 4, 2, 10, 4, 2, 11, 3, 2, 10, 4, 2, 10, 3, 2, 11, 3, 2, 10, 4, 2, 11, 5, 2, 9, 4, 2, 8, 5, 2, 8, 4, 2, 9, 4, 2, 8, 5, 2, 9, 4, 2, 8, 3, 2, 7, 4, 2, 7, 3, 2, 8, 3, 2, 7, 4, 2, 8, 4, 2, 9, 3, 2, 8, 4, 2, 8, 3, 2, 9, 3, 2, 8, 4, 2, 9, 5, 2, 8, 4, 2, 7, 5, 2, 7, 4, 2, 8, 4, 2, 7, 5, 2, 8, 5, 2, 7, 4, 2, 6, 5, 2, 6, 4, 2, 7, 4, 2, 6, 5, 2, 7, 4, 2, 7, 3, 2, 6, 4, 2, 6, 3, 2, 7, 3, 2, 6, 4, 2, 7, 0, 2, 15, -1, 2, 14, 0, 2, 14, -1, 2, 15, -1, 2, 14, 0, 2, 15, 1, 2, 15, 0, 2, 14, 1, 2, 14, 0, 2, 15, 0, 2, 14, 1, 2, 15, 2, 2, 15, 1, 2, 14, 2, 2, 14, 1, 2, 15, 1, 2, 14, 2, 2, 15, 3, 2, 15, 2, 2, 14, 3, 2, 14, 2, 2, 15, 2, 2, 14, 3, 2, 15, 0, 2, 14, -1, 2, 13, 0, 2, 13, -1, 2, 14, -1, 2, 13, 0, 2, 14, 1, 2, 14, 0, 2, 13, 1, 2, 13, 0, 2, 14, 0, 2, 13, 1, 2, 14, 2, 2, 14, 1, 2, 13, 2, 2, 13, 1, 2, 14, 1, 2, 13, 2, 2, 14, 3, 2, 14, 2, 2, 13, 3, 2, 13, 2, 2, 14, 2, 2, 13, 3, 2, 14, 1, 2, 13, 0, 2, 12, 1, 2, 12, 0, 2, 13, 0, 2, 12, 1, 2, 13, 2, 2, 13, 1, 2, 12, 2, 2, 12, 1, 2, 13, 1, 2, 12, 2, 2, 13, 3, 2, 13, 2, 2, 12, 3, 2, 12, 2, 2, 13, 2, 2, 12, 3, 2, 13, 3, 2, 12, 2, 2, 11, 3, 2, 11, 2, 2, 12, 2, 2, 11, 3, 2, 12, 2, 2, 12, 1, 2, 11, 2, 2, 11, 1, 2, 12, 1, 2, 11, 2, 2, 12, 0, 2, 12, -1, 2, 11, 0, 2, 11, -1, 2, 12, -1, 2, 11, 0, 2, 12, 0, 2, 13, -1, 2, 12, 0, 2, 12, -1, 2, 13, -1, 2, 12, 0, 2, 13, 1, 2, 12, 0, 2, 11, 1, 2, 11, 0, 2, 12, 0, 2, 11, 1, 2, 12, 0, 2, 11, -1, 2, 10, 0, 2, 10, -1, 2, 11, -1, 2, 10, 0, 2, 11, 1, 2, 11, 0, 2, 10, 1, 2, 10, 0, 2, 11, 0, 2, 10, 1, 2, 11, 2, 2, 11, 1, 2, 10, 2, 2, 10, 1, 2, 11, 1, 2, 10, 2, 2, 11, 3, 2, 11, 2, 2, 10, 3, 2, 10, 2, 2, 11, 2, 2, 10, 3, 2, 11, 0, 2, 10, -1, 2, 9, 0, 2, 9, -1, 2, 10, -1, 2, 9, 0, 2, 10, 1, 2, 10, 0, 2, 9, 1, 2, 9, 0, 2, 10, 0, 2, 9, 1, 2, 10, 2, 2, 10, 1, 2, 9, 2, 2, 9, 1, 2, 10, 1, 2, 9, 2, 2, 10, 3, 2, 10, 2, 2, 9, 3, 2, 9, 2, 2, 10, 2, 2, 9, 3, 2, 10, 1, 2, 8, 0, 2, 7, 1, 2, 7, 0, 2, 8, 0, 2, 7, 1, 2, 8, 0, 2, 8, -1, 2, 7, 0, 2, 7, -1, 2, 8, -1, 2, 7, 0, 2, 8, -4, 2, 9, -5, 2, 8, -4, 2, 8, -5, 2, 9, -5, 2, 8, -4, 2, 9, -4, 2, 8, -5, 2, 7, -4, 2, 7, -5, 2, 8, -5, 2, 7, -4, 2, 8, -4, 2, 7, -5, 2, 6, -4, 2, 6, -5, 2, 7, -5, 2, 6, -4, 2, 7, -3, 2, 7, -4, 2, 6, -3, 2, 6, -4, 2, 7, -4, 2, 6, -3, 2, 7, -2, 2, 7, -3, 2, 6, -2, 2, 6, -3, 2, 7, -3, 2, 6, -2, 2, 7, -1, 2, 7, -2, 2, 6, -1, 2, 6, -2, 2, 7, -2, 2, 6, -1, 2, 7, -1, 2, 9, -2, 2, 8, -1, 2, 8, -2, 2, 9, -2, 2, 8, -1, 2, 9, -1, 2, 8, -2, 2, 7, -1, 2, 7, -2, 2, 8, -2, 2, 7, -1, 2, 8, -2, 2, 9, -3, 2, 8, -2, 2, 8, -3, 2, 9, -3, 2, 8, -2, 2, 9, -2, 2, 8, -3, 2, 7, -2, 2, 7, -3, 2, 8, -3, 2, 7, -2, 2, 8, -3, 2, 8, -4, 2, 7, -3, 2, 7, -4, 2, 8, -4, 2, 7, -3, 2, 8, -3, 2, 9, -4, 2, 8, -3, 2, 8, -4, 2, 9, -4, 2, 8, -3, 2, 9, -4, 2, 11, -5, 2, 10, -4, 2, 10, -5, 2, 11, -5, 2, 10, -4, 2, 11, -4, 2, 10, -5, 2, 9, -4, 2, 9, -5, 2, 10, -5, 2, 9, -4, 2, 10, -1, 2, 11, -2, 2, 10, -1, 2, 10, -2, 2, 11, -2, 2, 10, -1, 2, 11, 3, 3, -1, 2, 3, -2, 3, 3, -2, 2, 3, -1, 2, 3, -2, 3, 3, -1, 1, 3, 2, 0, 3, 1, 1, 3, 1, 0, 3, 2, 0, 3, 1, 1, 3, 2, 4, 3, -1, 3, 3, -2, 4, 3, -2, 3, 3, -1, 3, 3, -2, 4, 3, -1, 1, 3, -2, 0, 3, -3, 1, 3, -3, 0, 3, -2, 0, 3, -3, 1, 3, -2, 3, 3, 1, 2, 3, 0, 3, 3, 0, 2, 3, 1, 2, 3, 0, 3, 3, 1, 3, 3, 4, 2, 3, 3, 3, 3, 3, 2, 3, 4, 2, 3, 3, 3, 3, 4, 4, 3, 0, 3, 3, -1, 4, 3, -1, 3, 3, 0, 3, 3, -1, 4, 3, 0, 5, 3, -2, 4, 3, -3, 5, 3, -3, 4, 3, -2, 4, 3, -3, 5, 3, -2, 4, 3, 2, 3, 3, 1, 4, 3, 1, 3, 3, 2, 3, 3, 1, 4, 3, 2, 5, 3, -3, 4, 3, -4, 5, 3, -4, 4, 3, -3, 4, 3, -4, 5, 3, -3, 2, 3, 4, 1, 3, 3, 2, 3, 3, 1, 3, 4, 1, 3, 3, 2, 3, 4, 1, 3, 1, 0, 3, 0, 1, 3, 0, 0, 3, 1, 0, 3, 0, 1, 3, 1, 1, 3, 4, 0, 3, 3, 1, 3, 3, 0, 3, 4, 0, 3, 3, 1, 3, 4, 4, 3, 4, 3, 3, 3, 4, 3, 3, 3, 3, 4, 3, 3, 3, 4, 3, 4, 3, 3, 3, 2, 3, 2, 3, 3, 2, 2, 3, 3, 2, 3, 2, 3, 3, 3, 2, 3, 3, 1, 3, 2, 2, 3, 2, 1, 3, 3, 1, 3, 2, 2, 3, 3, 2, 3, -2, 1, 3, -3, 2, 3, -3, 1, 3, -2, 1, 3, -3, 2, 3, -2, 3, 3, 0, 2, 3, -1, 3, 3, -1, 2, 3, 0, 2, 3, -1, 3, 3, 0, 3, 3, -2, 2, 3, -3, 3, 3, -3, 2, 3, -2, 2, 3, -3, 3, 3, -2, 5, 3, -1, 4, 3, -2, 5, 3, -2, 4, 3, -1, 4, 3, -2, 5, 3, -1, 1, 3, 3, 0, 3, 2, 1, 3, 2, 0, 3, 3, 0, 3, 2, 1, 3, 3, 5, 3, -4, 4, 3, -5, 5, 3, -5, 4, 3, -4, 4, 3, -5, 5, 3, -4, 5, 3, 0, 4, 3, -1, 5, 3, -1, 4, 3, 0, 4, 3, -1, 5, 3, 0, 2, 3, 2, 1, 3, 1, 2, 3, 1, 1, 3, 2, 1, 3, 1, 2, 3, 2, 2, 3, 1, 1, 3, 0, 2, 3, 0, 1, 3, 1, 1, 3, 0, 2, 3, 1, 3, 3, 5, 2, 3, 4, 3, 3, 4, 2, 3, 5, 2, 3, 4, 3, 3, 5, 5, 3, 1, 4, 3, 0, 5, 3, 0, 4, 3, 1, 4, 3, 0, 5, 3, 1, 4, 3, 3, 3, 3, 2, 4, 3, 2, 3, 3, 3, 3, 3, 2, 4, 3, 3, 2, 3, 5, 1, 3, 4, 2, 3, 4, 1, 3, 5, 1, 3, 4, 2, 3, 5, 4, 3, 5, 3, 3, 4, 4, 3, 4, 3, 3, 5, 3, 3, 4, 4, 3, 5, 5, 3, 4, 4, 3, 3, 5, 3, 3, 4, 3, 4, 4, 3, 3, 5, 3, 4, 5, 3, 3, 4, 3, 2, 5, 3, 2, 4, 3, 3, 4, 3, 2, 5, 3, 3, 3, 3, 2, 2, 3, 1, 3, 3, 1, 2, 3, 2, 2, 3, 1, 3, 3, 2, 1, 3, -1, 0, 3, -2, 1, 3, -2, 0, 3, -1, 0, 3, -2, 1, 3, -1, 5, 3, 5, 4, 3, 4, 5, 3, 4, 4, 3, 5, 4, 3, 4, 5, 3, 5, 4, 3, 1, 3, 3, 0, 4, 3, 0, 3, 3, 1, 3, 3, 0, 4, 3, 1, 4, 3, -2, 3, 3, -3, 4, 3, -3, 3, 3, -2, 3, 3, -3, 4, 3, -2, 1, 3, 5, 0, 3, 4, 1, 3, 4, 0, 3, 5, 0, 3, 4, 1, 3, 5, 5, 3, 2, 4, 3, 1, 5, 3, 1, 4, 3, 2, 4, 3, 1, 5, 3, 2, -3, 3, -3, -4, 3, -4, -3, 3, -4, -4, 3, -3, -4, 3, -4, -3, 3, -3, -2, 3, -3, -3, 3, -4, -2, 3, -4, -3, 3, -3, -3, 3, -4, -2, 3, -3, -6, 2, 6, -6, 2, 5, -5, 3, 5, -5, 2, 6, -6, 2, 6, -5, 3, 5, 6, 2, -3, 5, 3, -4, 6, 2, -4, 5, 3, -3, 5, 3, -4, 6, 2, -3, 6, 2, -4, 5, 3, -5, 6, 2, -5, 5, 3, -4, 5, 3, -5, 6, 2, -4, 6, 2, 1, 5, 3, 0, 6, 2, 0, 5, 3, 1, 5, 3, 0, 6, 2, 1, 6, 2, 0, 5, 3, -1, 6, 2, -1, 5, 3, 0, 5, 3, -1, 6, 2, 0, -4, 2, 6, -5, 3, 5, -4, 3, 5, -5, 2, 6, -5, 3, 5, -4, 2, 6, -3, 2, 6, -4, 3, 5, -3, 3, 5, -4, 2, 6, -4, 3, 5, -3, 2, 6, -2, 2, 6, -3, 3, 5, -2, 3, 5, -3, 2, 6, -3, 3, 5, -2, 2, 6, -1, 2, 6, -2, 3, 5, -1, 3, 5, -2, 2, 6, -2, 3, 5, -1, 2, 6, 6, 2, -1, 5, 3, -2, 6, 2, -2, 5, 3, -1, 5, 3, -2, 6, 2, -1, 6, 2, 4, 5, 3, 3, 6, 2, 3, 5, 3, 4, 5, 3, 3, 6, 2, 4, 6, 2, 3, 5, 3, 2, 6, 2, 2, 5, 3, 3, 5, 3, 2, 6, 2, 3, 6, 2, 2, 5, 3, 1, 6, 2, 1, 5, 3, 2, 5, 3, 1, 6, 2, 2, 0, 2, 6, -1, 3, 5, 0, 3, 5, -1, 2, 6, -1, 3, 5, 0, 2, 6, 1, 2, 6, 0, 3, 5, 1, 3, 5, 0, 2, 6, 0, 3, 5, 1, 2, 6, 2, 2, 6, 1, 3, 5, 2, 3, 5, 1, 2, 6, 1, 3, 5, 2, 2, 6, 3, 2, 6, 2, 3, 5, 3, 3, 5, 2, 2, 6, 2, 3, 5, 3, 2, 6, 6, 2, -2, 5, 3, -3, 6, 2, -3, 5, 3, -2, 5, 3, -3, 6, 2, -2, 6, 2, 5, 5, 3, 4, 6, 2, 4, 5, 3, 5, 5, 3, 4, 6, 2, 5, 4, 2, 6, 3, 3, 5, 4, 3, 5, 3, 2, 6, 3, 3, 5, 4, 2, 6, 5, 2, 6, 4, 3, 5, 5, 3, 5, 4, 2, 6, 4, 3, 5, 5, 2, 6, 6, 2, 6, 5, 3, 5, 6, 2, 5, 5, 2, 6, 5, 3, 5, 6, 2, 6, -5, 3, -5, -6, 2, -6, -5, 2, -6, -6, 2, -5, -6, 2, -6, -5, 3, -5, -5, 3, -4, -6, 2, -5, -5, 3, -5, -6, 2, -4, -6, 2, -5, -5, 3, -4, -5, 3, -3, -6, 2, -4, -5, 3, -4, -6, 2, -3, -6, 2, -4, -5, 3, -3, -5, 3, 1, -6, 2, 0, -5, 3, 0, -6, 2, 1, -6, 2, 0, -5, 3, 1, -5, 3, -2, -6, 2, -3, -5, 3, -3, -6, 2, -2, -6, 2, -3, -5, 3, -2, -5, 3, -1, -6, 2, -2, -5, 3, -2, -6, 2, -1, -6, 2, -2, -5, 3, -1, -5, 3, 0, -6, 2, -1, -5, 3, -1, -6, 2, 0, -6, 2, -1, -5, 3, 0, -5, 3, 2, -6, 2, 1, -5, 3, 1, -6, 2, 2, -6, 2, 1, -5, 3, 2, -5, 3, 3, -6, 2, 2, -5, 3, 2, -6, 2, 3, -6, 2, 2, -5, 3, 3, -5, 3, 4, -6, 2, 3, -5, 3, 3, -6, 2, 4, -6, 2, 3, -5, 3, 4, -5, 3, 5, -6, 2, 4, -5, 3, 4, -6, 2, 5, -6, 2, 4, -5, 3, 5, -1, 3, -5, -2, 2, -6, -1, 2, -6, -2, 3, -5, -2, 2, -6, -1, 3, -5, -2, 3, -5, -3, 2, -6, -2, 2, -6, -3, 3, -5, -3, 2, -6, -2, 3, -5, -3, 3, -5, -4, 2, -6, -3, 2, -6, -4, 3, -5, -4, 2, -6, -3, 3, -5, -4, 3, -5, -5, 2, -6, -4, 2, -6, -5, 3, -5, -5, 2, -6, -4, 3, -5, 3, 3, -5, 2, 2, -6, 3, 2, -6, 2, 3, -5, 2, 2, -6, 3, 3, -5, 2, 3, -5, 1, 2, -6, 2, 2, -6, 1, 3, -5, 1, 2, -6, 2, 3, -5, 1, 3, -5, 0, 2, -6, 1, 2, -6, 0, 3, -5, 0, 2, -6, 1, 3, -5, 0, 3, -5, -1, 2, -6, 0, 2, -6, -1, 3, -5, -1, 2, -6, 0, 3, -5, 5, 3, -5, 5, 2, -6, 6, 2, -6, 6, 2, -5, 5, 3, -5, 6, 2, -6, 5, 3, -5, 4, 2, -6, 5, 2, -6, 4, 3, -5, 4, 2, -6, 5, 3, -5, 4, 3, -5, 3, 2, -6, 4, 2, -6, 3, 3, -5, 3, 2, -6, 4, 3, -5, -1, 2, 10, -2, 2, 9, -1, 2, 9, -2, 2, 10, -2, 2, 9, -1, 2, 10, -1, 2, 12, -2, 2, 11, -1, 2, 11, -2, 2, 12, -2, 2, 11, -1, 2, 12, -2, 2, 12, -3, 2, 11, -2, 2, 11, -3, 2, 12, -3, 2, 11, -2, 2, 12, -1, 2, 13, -2, 2, 12, -1, 2, 12, -2, 2, 13, -2, 2, 12, -1, 2, 13, -2, 2, 13, -3, 2, 12, -2, 2, 12, -3, 2, 13, -3, 2, 12, -2, 2, 13, -3, 2, 13, -4, 2, 12, -3, 2, 12, -4, 2, 13, -4, 2, 12, -3, 2, 13, -3, 2, 12, -4, 2, 11, -3, 2, 11, -4, 2, 12, -4, 2, 11, -3, 2, 12, -3, 2, 11, -4, 2, 10, -3, 2, 10, -4, 2, 11, -4, 2, 10, -3, 2, 11, -2, 2, 11, -3, 2, 10, -2, 2, 10, -3, 2, 11, -3, 2, 10, -2, 2, 11, -3, 2, 10, -4, 2, 9, -3, 2, 9, -4, 2, 10, -4, 2, 9, -3, 2, 10, -2, 2, 10, -3, 2, 9, -2, 2, 9, -3, 2, 10, -3, 2, 9, -2, 2, 10, -4, 2, 12, -5, 2, 11, -4, 2, 11, -5, 2, 12, -5, 2, 11, -4, 2, 12, -4, 2, 13, -5, 2, 12, -4, 2, 12, -5, 2, 13, -5, 2, 12, -4, 2, 13, -2, 2, 14, -3, 2, 13, -2, 2, 13, -3, 2, 14, -3, 2, 13, -2, 2, 14, -1, 2, 14, -2, 2, 13, -1, 2, 13, -2, 2, 14, -2, 2, 13, -1, 2, 14, -3, 2, 14, -4, 2, 13, -3, 2, 13, -4, 2, 14, -4, 2, 13, -3, 2, 14, -1, 2, 15, -2, 2, 14, -1, 2, 14, -2, 2, 15, -2, 2, 14, -1, 2, 15, -2, 2, 15, -3, 2, 14, -2, 2, 14, -3, 2, 15, -3, 2, 14, -2, 2, 15, -3, 2, 15, -4, 2, 14, -3, 2, 14, -4, 2, 15, -4, 2, 14, -3, 2, 15, -4, 2, 15, -5, 2, 14, -4, 2, 14, -5, 2, 15, -5, 2, 14, -4, 2, 15, -4, 2, 14, -5, 2, 13, -4, 2, 13, -5, 2, 14, -5, 2, 13, -4, 2, 14, 3, 2, 7, 2, 2, 6, 3, 2, 6, 2, 2, 7, 2, 2, 6, 3, 2, 7, 1, 2, 9, 0, 2, 8, 1, 2, 8, 0, 2, 9, 0, 2, 8, 1, 2, 9, 2, 2, 7, 1, 2, 6, 2, 2, 6, 1, 2, 7, 1, 2, 6, 2, 2, 7, 3, 2, 8, 2, 2, 7, 3, 2, 7, 2, 2, 8, 2, 2, 7, 3, 2, 8, 2, 2, 9, 1, 2, 8, 2, 2, 8, 1, 2, 9, 1, 2, 8, 2, 2, 9, 0, 2, 9, -1, 2, 8, 0, 2, 8, -1, 2, 9, -1, 2, 8, 0, 2, 9, 0, 2, 7, -1, 2, 6, 0, 2, 6, -1, 2, 7, -1, 2, 6, 0, 2, 7, 1, 2, 7, 0, 2, 6, 1, 2, 6, 0, 2, 7, 0, 2, 6, 1, 2, 7, 2, 2, 8, 1, 2, 7, 2, 2, 7, 1, 2, 8, 1, 2, 7, 2, 2, 8, 3, 2, 9, 2, 2, 8, 3, 2, 8, 2, 2, 9, 2, 2, 8, 3, 2, 9, 0, 3, -3, -1, 3, -4, 0, 3, -4, -1, 3, -3, -1, 3, -4, 0, 3, -3, -1, 3, -3, -2, 3, -4, -1, 3, -4, -2, 3, -3, -2, 3, -4, -1, 3, -3, 0, 3, -4, -1, 3, -5, 0, 3, -5, -1, 3, -4, -1, 3, -5, 0, 3, -4, -1, 3, -4, -2, 3, -5, -1, 3, -5, -2, 3, -4, -2, 3, -5, -1, 3, -4, -2, 3, -4, -3, 3, -5, -2, 3, -5, -3, 3, -4, -3, 3, -5, -2, 3, -4, -3, 3, -4, -4, 3, -5, -3, 3, -5, -4, 3, -4, -4, 3, -5, -3, 3, -4, -4, 3, -4, -5, 3, -5, -4, 3, -5, -5, 3, -4, -5, 3, -5, -4, 3, -4, -4, 3, -3, -5, 3, -4, -4, 3, -4, -5, 3, -3, -5, 3, -4, -4, 3, -3, -1, 3, -1, -2, 3, -2, -1, 3, -2, -2, 3, -1, -2, 3, -2, -1, 3, -1, -2, 3, 0, -3, 3, -1, -2, 3, -1, -3, 3, 0, -3, 3, -1, -2, 3, 0, -1, 3, 0, -2, 3, -1, -1, 3, -1, -2, 3, 0, -2, 3, -1, -1, 3, 0, -1, 3, 1, -2, 3, 0, -1, 3, 0, -2, 3, 1, -2, 3, 0, -1, 3, 1, 0, 3, 1, -1, 3, 0, 0, 3, 0, -1, 3, 1, -1, 3, 0, 0, 3, 1, 0, 3, -1, -1, 3, -2, 0, 3, -2, -1, 3, -1, -1, 3, -2, 0, 3, -1, 0, 3, 0, -1, 3, -1, 0, 3, -1, -1, 3, 0, -1, 3, -1, 0, 3, 0, -2, 3, 1, -3, 3, 0, -2, 3, 0, -3, 3, 1, -3, 3, 0, -2, 3, 1, -2, 3, -1, -3, 3, -2, -2, 3, -2, -3, 3, -1, -3, 3, -2, -2, 3, -1, -2, 3, -2, -3, 3, -3, -2, 3, -3, -3, 3, -2, -3, 3, -3, -2, 3, -2, -1, 3, -2, -2, 3, -3, -1, 3, -3, -2, 3, -2, -2, 3, -3, -1, 3, -2, 0, 3, -2, -1, 3, -3, 0, 3, -3, -1, 3, -2, -1, 3, -3, 0, 3, -2, -3, 3, -2, -4, 3, -3, -3, 3, -3, -4, 3, -2, -4, 3, -3, -3, 3, -2, -3, 3, 1, -4, 3, 0, -3, 3, 0, -4, 3, 1, -4, 3, 0, -3, 3, 1, -3, 3, 0, -4, 3, -1, -3, 3, -1, -4, 3, 0, -4, 3, -1, -3, 3, 0, -3, 3, -1, -4, 3, -2, -3, 3, -2, -4, 3, -1, -4, 3, -2, -3, 3, -1, -4, 3, -1, -5, 3, -2, -4, 3, -2, -5, 3, -1, -5, 3, -2, -4, 3, -1, -4, 3, 0, -5, 3, -1, -4, 3, -1, -5, 3, 0, -5, 3, -1, -4, 3, 0, -4, 3, 1, -5, 3, 0, -4, 3, 0, -5, 3, 1, -5, 3, 0, -4, 3, 1, -4, 3, -2, -5, 3, -3, -4, 3, -3, -5, 3, -2, -5, 3, -3, -4, 3, -2, -1, 3, 2, -2, 3, 1, -1, 3, 1, -2, 3, 2, -2, 3, 1, -1, 3, 2, -1, 3, 3, -2, 3, 2, -1, 3, 2, -2, 3, 3, -2, 3, 2, -1, 3, 3, 0, 3, 3, -1, 3, 2, 0, 3, 2, -1, 3, 3, -1, 3, 2, 0, 3, 3, 0, 3, 2, -1, 3, 1, 0, 3, 1, -1, 3, 2, -1, 3, 1, 0, 3, 2, -2, 3, 2, -3, 3, 1, -2, 3, 1, -3, 3, 2, -3, 3, 1, -2, 3, 2, -2, 3, 3, -3, 3, 2, -2, 3, 2, -3, 3, 3, -3, 3, 2, -2, 3, 3, 0, 3, 4, -1, 3, 3, 0, 3, 3, -1, 3, 4, -1, 3, 3, 0, 3, 4, -1, 3, 4, -2, 3, 3, -1, 3, 3, -2, 3, 4, -2, 3, 3, -1, 3, 4, -2, 3, 4, -3, 3, 3, -2, 3, 3, -3, 3, 4, -3, 3, 3, -2, 3, 4, -3, 3, 4, -4, 3, 3, -3, 3, 3, -4, 3, 4, -4, 3, 3, -3, 3, 4, -3, 3, 3, -4, 3, 2, -3, 3, 2, -4, 3, 3, -4, 3, 2, -3, 3, 3, -3, 3, 2, -4, 3, 1, -3, 3, 1, -4, 3, 2, -4, 3, 1, -3, 3, 2, -4, 3, 5, -5, 3, 4, -4, 3, 4, -5, 3, 5, -5, 3, 4, -4, 3, 5, -3, 3, 5, -4, 3, 4, -3, 3, 4, -4, 3, 5, -4, 3, 4, -3, 3, 5, -2, 3, 5, -3, 3, 4, -2, 3, 4, -3, 3, 5, -3, 3, 4, -2, 3, 5, -1, 3, 5, -2, 3, 4, -1, 3, 4, -2, 3, 5, -2, 3, 4, -1, 3, 5, 0, 3, 5, -1, 3, 4, 0, 3, 4, -1, 3, 5, -1, 3, 4, 0, 3, 5, -4, 3, 2, -5, 3, 1, -4, 3, 1, -5, 3, 2, -5, 3, 1, -4, 3, 2, -4, 3, 3, -5, 3, 2, -4, 3, 2, -5, 3, 3, -5, 3, 2, -4, 3, 3, -4, 3, 4, -5, 3, 3, -4, 3, 3, -5, 3, 4, -5, 3, 3, -4, 3, 4, 1, 3, -3, 0, 3, -4, 1, 3, -4, 0, 3, -3, 0, 3, -4, 1, 3, -3, 2, 3, -3, 1, 3, -4, 2, 3, -4, 1, 3, -3, 1, 3, -4, 2, 3, -3, 3, 3, -3, 2, 3, -4, 3, 3, -4, 2, 3, -3, 2, 3, -4, 3, 3, -3, 4, 3, -3, 3, 3, -4, 4, 3, -4, 3, 3, -3, 3, 3, -4, 4, 3, -3, 4, 3, -4, 3, 3, -5, 4, 3, -5, 3, 3, -4, 3, 3, -5, 4, 3, -4, 2, 3, -4, 1, 3, -5, 2, 3, -5, 1, 3, -4, 1, 3, -5, 2, 3, -4, 1, 3, -4, 0, 3, -5, 1, 3, -5, 0, 3, -4, 0, 3, -5, 1, 3, -4, 3, 3, -4, 2, 3, -5, 3, 3, -5, 2, 3, -4, 2, 3, -5, 3, 3, -4, 1, 3, 0, 0, 3, -1, 1, 3, -1, 0, 3, 0, 0, 3, -1, 1, 3, 0, 2, 3, 0, 1, 3, -1, 2, 3, -1, 1, 3, 0, 1, 3, -1, 2, 3, 0, 2, 3, -1, 1, 3, -2, 2, 3, -2, 1, 3, -1, 1, 3, -2, 2, 3, -1, 1, 3, 21, 0, 3, 20, 1, 3, 20, 0, 3, 21, 0, 3, 20, 1, 3, 21, 0, 3, 22, -1, 3, 21, 0, 3, 21, -1, 3, 22, -1, 3, 21, 0, 3, 22, -3, 3, 21, -4, 3, 20, -3, 3, 20, -4, 3, 21, -4, 3, 20, -3, 3, 21, -1, 3, 19, -2, 3, 18, -1, 3, 18, -2, 3, 19, -2, 3, 18, -1, 3, 19, -3, 3, 25, -4, 3, 24, -3, 3, 24, -4, 3, 25, -4, 3, 24, -3, 3, 25, 2, 3, 22, 1, 3, 21, 2, 3, 21, 1, 3, 22, 1, 3, 21, 2, 3, 22, 0, 3, 21, -1, 3, 20, 0, 3, 20, -1, 3, 21, -1, 3, 20, 0, 3, 21, 2, 3, 23, 1, 3, 22, 2, 3, 22, 1, 3, 23, 1, 3, 22, 2, 3, 23, 3, 3, 23, 2, 3, 22, 3, 3, 22, 2, 3, 23, 2, 3, 22, 3, 3, 23, 3, 3, 22, 2, 3, 21, 3, 3, 21, 2, 3, 22, 2, 3, 21, 3, 3, 22, -3, 3, 20, -4, 3, 19, -3, 3, 19, -4, 3, 20, -4, 3, 19, -3, 3, 20, 2, 3, 21, 1, 3, 20, 2, 3, 20, 1, 3, 21, 1, 3, 20, 2, 3, 21, 2, 3, 24, 1, 3, 23, 2, 3, 23, 1, 3, 24, 1, 3, 23, 2, 3, 24, 1, 3, 22, 0, 3, 21, 1, 3, 21, 0, 3, 22, 0, 3, 21, 1, 3, 22, -2, 3, 22, -3, 3, 21, -2, 3, 21, -3, 3, 22, -3, 3, 21, -2, 3, 22, -2, 3, 23, -3, 3, 22, -2, 3, 22, -3, 3, 23, -3, 3, 22, -2, 3, 23, -1, 3, 24, -2, 3, 23, -1, 3, 23, -2, 3, 24, -2, 3, 23, -1, 3, 24, -1, 3, 20, -2, 3, 19, -1, 3, 19, -2, 3, 20, -2, 3, 19, -1, 3, 20, -2, 3, 21, -3, 3, 20, -2, 3, 20, -3, 3, 21, -3, 3, 20, -2, 3, 21, -2, 3, 24, -3, 3, 23, -2, 3, 23, -3, 3, 24, -3, 3, 23, -2, 3, 24, -1, 3, 25, -2, 3, 24, -1, 3, 24, -2, 3, 25, -2, 3, 24, -1, 3, 25, 2, 3, 25, 1, 3, 24, 2, 3, 24, 1, 3, 25, 1, 3, 24, 2, 3, 25, 2, 3, 20, 1, 3, 19, 2, 3, 19, 1, 3, 20, 1, 3, 19, 2, 3, 20, 0, 3, 19, -1, 3, 18, 0, 3, 18, -1, 3, 19, -1, 3, 18, 0, 3, 19, -3, 3, 22, -4, 3, 21, -3, 3, 21, -4, 3, 22, -4, 3, 21, -3, 3, 22, 0, 3, 25, -1, 3, 24, 0, 3, 24, -1, 3, 25, -1, 3, 24, 0, 3, 25, 3, 3, 21, 2, 3, 20, 3, 3, 20, 2, 3, 21, 2, 3, 20, 3, 3, 21, 2, 3, 19, 1, 3, 18, 2, 3, 18, 1, 3, 19, 1, 3, 18, 2, 3, 19, 1, 3, 25, 0, 3, 24, 1, 3, 24, 0, 3, 25, 0, 3, 24, 1, 3, 25, -1, 3, 22, -2, 3, 21, -1, 3, 21, -2, 3, 22, -2, 3, 21, -1, 3, 22, -1, 3, 23, -2, 3, 22, -1, 3, 22, -2, 3, 23, -2, 3, 22, -1, 3, 23, -1, 3, 21, -2, 3, 20, -1, 3, 20, -2, 3, 21, -2, 3, 20, -1, 3, 21, 0, 3, 20, -1, 3, 19, 0, 3, 19, -1, 3, 20, -1, 3, 19, 0, 3, 20, 1, 3, 20, 0, 3, 19, 1, 3, 19, 0, 3, 20, 0, 3, 19, 1, 3, 20, 1, 3, 19, 0, 3, 18, 1, 3, 18, 0, 3, 19, 0, 3, 18, 1, 3, 19, -2, 3, 20, -3, 3, 19, -2, 3, 19, -3, 3, 20, -3, 3, 19, -2, 3, 20, -3, 3, 23, -4, 3, 22, -3, 3, 22, -4, 3, 23, -4, 3, 22, -3, 3, 23, -3, 3, 24, -4, 3, 23, -3, 3, 23, -4, 3, 24, -4, 3, 23, -3, 3, 24, -2, 3, 25, -3, 3, 24, -2, 3, 24, -3, 3, 25, -3, 3, 24, -2, 3, 25, -1, 3, 26, -2, 3, 25, -1, 3, 25, -2, 3, 26, -2, 3, 25, -1, 3, 26, -1, 3, 27, -2, 3, 26, -1, 3, 26, -2, 3, 27, -2, 3, 26, -1, 3, 27, 0, 3, 27, -1, 3, 26, 0, 3, 26, -1, 3, 27, -1, 3, 26, 0, 3, 27, 1, 3, 26, 0, 3, 25, 1, 3, 25, 0, 3, 26, 0, 3, 25, 1, 3, 26, 0, 3, 26, -1, 3, 25, 0, 3, 25, -1, 3, 26, -1, 3, 25, 0, 3, 26, 1, 3, 27, 0, 3, 26, 1, 3, 26, 0, 3, 27, 0, 3, 26, 1, 3, 27, 2, 3, 27, 1, 3, 26, 2, 3, 26, 1, 3, 27, 1, 3, 26, 2, 3, 27, 2, 3, 26, 1, 3, 25, 2, 3, 25, 1, 3, 26, 1, 3, 25, 2, 3, 26, 3, 3, 26, 2, 3, 25, 3, 3, 25, 2, 3, 26, 2, 3, 25, 3, 3, 26, 3, 3, 25, 2, 3, 24, 3, 3, 24, 2, 3, 25, 2, 3, 24, 3, 3, 25, 4, 3, 24, 3, 3, 23, 4, 3, 23, 3, 3, 24, 3, 3, 23, 4, 3, 24, 3, 3, 24, 2, 3, 23, 3, 3, 23, 2, 3, 24, 2, 3, 23, 3, 3, 24, 4, 3, 23, 3, 3, 22, 4, 3, 22, 3, 3, 23, 3, 3, 22, 4, 3, 23, 4, 3, 22, 3, 3, 21, 4, 3, 21, 3, 3, 22, 3, 3, 21, 4, 3, 22, 4, 3, 21, 3, 3, 20, 4, 3, 20, 3, 3, 21, 3, 3, 20, 4, 3, 21, 4, 3, 20, 3, 3, 19, 4, 3, 19, 3, 3, 20, 3, 3, 19, 4, 3, 20, 3, 3, 20, 2, 3, 19, 3, 3, 19, 2, 3, 20, 2, 3, 19, 3, 3, 20, 4, 3, 26, 3, 3, 25, 4, 3, 25, 3, 3, 26, 3, 3, 25, 4, 3, 26, 4, 3, 25, 3, 3, 24, 4, 3, 24, 3, 3, 25, 3, 3, 24, 4, 3, 25, -2, 3, 26, -3, 3, 25, -2, 3, 25, -3, 3, 26, -3, 3, 25, -2, 3, 26, -3, 3, 26, -4, 3, 25, -3, 3, 25, -4, 3, 26, -4, 3, 25, -3, 3, 26, 1, 3, 23, 0, 3, 22, 1, 3, 22, 0, 3, 23, 0, 3, 22, 1, 3, 23, 0, 3, 23, -1, 3, 22, 0, 3, 22, -1, 3, 23, -1, 3, 22, 0, 3, 23, 0, 3, 24, -1, 3, 23, 0, 3, 23, -1, 3, 24, -1, 3, 23, 0, 3, 24, 1, 3, 24, 0, 3, 23, 1, 3, 23, 0, 3, 24, 0, 3, 23, 1, 3, 24, 13, 3, 33, 12, 3, 32, 13, 3, 32, 12, 3, 33, 12, 3, 32, 13, 3, 33, 7, 3, 32, 6, 3, 31, 7, 3, 31, 6, 3, 32, 6, 3, 31, 7, 3, 32, 5, 3, 31, 4, 3, 30, 5, 3, 30, 4, 3, 31, 4, 3, 30, 5, 3, 31, 5, 3, 30, 4, 3, 29, 5, 3, 29, 4, 3, 30, 4, 3, 29, 5, 3, 30, 6, 3, 32, 5, 3, 31, 6, 3, 31, 5, 3, 32, 5, 3, 31, 6, 3, 32, 5, 3, 32, 4, 3, 31, 5, 3, 31, 4, 3, 32, 4, 3, 31, 5, 3, 32, 11, 3, 35, 10, 3, 34, 11, 3, 34, 10, 3, 35, 10, 3, 34, 11, 3, 35, 13, 3, 35, 12, 3, 34, 13, 3, 34, 12, 3, 35, 12, 3, 34, 13, 3, 35, 13, 3, 34, 12, 3, 33, 13, 3, 33, 12, 3, 34, 12, 3, 33, 13, 3, 34, 14, 3, 34, 13, 3, 33, 14, 3, 33, 13, 3, 34, 13, 3, 33, 14, 3, 34, 11, 3, 33, 10, 3, 32, 11, 3, 32, 10, 3, 33, 10, 3, 32, 11, 3, 33, 11, 3, 34, 10, 3, 33, 11, 3, 33, 10, 3, 34, 10, 3, 33, 11, 3, 34, 12, 3, 35, 11, 3, 34, 12, 3, 34, 11, 3, 35, 11, 3, 34, 12, 3, 35, 12, 3, 33, 11, 3, 32, 12, 3, 32, 11, 3, 33, 11, 3, 32, 12, 3, 33, 12, 3, 34, 11, 3, 33, 12, 3, 33, 11, 3, 34, 11, 3, 33, 12, 3, 34, 14, 3, 33, 13, 3, 32, 14, 3, 32, 13, 3, 33, 13, 3, 32, 14, 3, 33, 8, 3, 29, 7, 3, 28, 8, 3, 28, 7, 3, 29, 7, 3, 28, 8, 3, 29, 8, 3, 30, 7, 3, 29, 8, 3, 29, 7, 3, 30, 7, 3, 29, 8, 3, 30, 9, 3, 29, 8, 3, 28, 9, 3, 28, 8, 3, 29, 8, 3, 28, 9, 3, 29, 7, 3, 31, 6, 3, 30, 7, 3, 30, 6, 3, 31, 6, 3, 30, 7, 3, 31, 7, 3, 30, 6, 3, 29, 7, 3, 29, 6, 3, 30, 6, 3, 29, 7, 3, 30, 7, 3, 29, 6, 3, 28, 7, 3, 28, 6, 3, 29, 6, 3, 28, 7, 3, 29, 7, 3, 28, 6, 3, 27, 7, 3, 27, 6, 3, 28, 6, 3, 27, 7, 3, 28, 8, 3, 28, 7, 3, 27, 8, 3, 27, 7, 3, 28, 7, 3, 27, 8, 3, 28, 6, 3, 29, 5, 3, 28, 6, 3, 28, 5, 3, 29, 5, 3, 28, 6, 3, 29, 6, 3, 30, 5, 3, 29, 6, 3, 29, 5, 3, 30, 5, 3, 29, 6, 3, 30, 9, 3, 28, 8, 3, 27, 9, 3, 27, 8, 3, 28, 8, 3, 27, 9, 3, 28, 6, 3, 31, 5, 3, 30, 6, 3, 30, 5, 3, 31, 5, 3, 30, 6, 3, 31, 8, 3, 31, 7, 3, 30, 8, 3, 30, 7, 3, 31, 7, 3, 30, 8, 3, 31, 12, 3, 36, 11, 3, 35, 12, 3, 35, 11, 3, 36, 11, 3, 35, 12, 3, 36, 11, 3, 36, 10, 3, 35, 11, 3, 35, 10, 3, 36, 10, 3, 35, 11, 3, 36, 13, 3, 36, 12, 3, 35, 13, 3, 35, 12, 3, 36, 12, 3, 35, 13, 3, 36, 14, 3, 35, 13, 3, 34, 14, 3, 34, 13, 3, 35, 13, 3, 34, 14, 3, 35, 9, 3, 30, 8, 3, 29, 9, 3, 29, 8, 3, 30, 8, 3, 29, 9, 3, 30, 17, 3, 31, 16, 3, 30, 17, 3, 30, 16, 3, 31, 16, 3, 30, 17, 3, 31, 18, 3, 31, 17, 3, 30, 18, 3, 30, 17, 3, 31, 17, 3, 30, 18, 3, 31, 17, 3, 32, 16, 3, 31, 17, 3, 31, 16, 3, 32, 16, 3, 31, 17, 3, 32, 18, 3, 32, 17, 3, 31, 18, 3, 31, 17, 3, 32, 17, 3, 31, 18, 3, 32, 21, 3, 29, 20, 3, 28, 21, 3, 28, 20, 3, 29, 20, 3, 28, 21, 3, 29, 20, 3, 29, 19, 3, 28, 20, 3, 28, 19, 3, 29, 19, 3, 28, 20, 3, 29, 20, 3, 28, 19, 3, 27, 20, 3, 27, 19, 3, 28, 19, 3, 27, 20, 3, 28, 21, 3, 28, 20, 3, 27, 21, 3, 27, 20, 3, 28, 20, 3, 27, 21, 3, 28, 21, 3, 25, 20, 3, 24, 21, 3, 24, 20, 3, 25, 20, 3, 24, 21, 3, 25, 21, 3, 24, 20, 3, 23, 21, 3, 23, 20, 3, 24, 20, 3, 23, 21, 3, 24, 20, 3, 24, 19, 3, 23, 20, 3, 23, 19, 3, 24, 19, 3, 23, 20, 3, 24, 20, 3, 25, 19, 3, 24, 20, 3, 24, 19, 3, 25, 19, 3, 24, 20, 3, 25, 21, 3, 20, 20, 3, 19, 21, 3, 19, 20, 3, 20, 20, 3, 19, 21, 3, 20, 21, 3, 19, 20, 3, 18, 21, 3, 18, 20, 3, 19, 20, 3, 18, 21, 3, 19, 21, 3, 18, 20, 3, 17, 21, 3, 17, 20, 3, 18, 20, 3, 17, 21, 3, 18, 20, 3, 19, 19, 3, 18, 20, 3, 18, 19, 3, 19, 19, 3, 18, 20, 3, 19, 20, 3, 20, 19, 3, 19, 20, 3, 19, 19, 3, 20, 19, 3, 19, 20, 3, 20, 22, 3, 19, 21, 3, 18, 22, 3, 18, 21, 3, 19, 21, 3, 18, 22, 3, 19, 22, 3, 18, 21, 3, 17, 22, 3, 17, 21, 3, 18, 21, 3, 17, 22, 3, 18, 22, 3, 20, 21, 3, 19, 22, 3, 19, 21, 3, 20, 21, 3, 19, 22, 3, 20, 20, 3, 18, 19, 3, 17, 20, 3, 17, 19, 3, 18, 19, 3, 17, 20, 3, 18, 2, 3, 19, 2, 3, 18, 3, 2, 18, 3, 3, 19, 2, 3, 19, 3, 2, 18, 4, 3, 19, 3, 2, 18, 4, 2, 18, 3, 3, 19, 3, 2, 18, 4, 3, 19, 4, 3, 19, 4, 2, 18, 5, 2, 18, 5, 2, 19, 4, 3, 19, 5, 2, 18, 5, 2, 20, 4, 3, 19, 5, 2, 19, 4, 3, 20, 4, 3, 19, 5, 2, 20, 5, 2, 21, 4, 3, 20, 5, 2, 20, 4, 3, 21, 4, 3, 20, 5, 2, 21, 5, 2, 22, 4, 3, 21, 5, 2, 21, 4, 3, 22, 4, 3, 21, 5, 2, 22, 5, 2, 23, 4, 3, 22, 5, 2, 22, 4, 3, 23, 4, 3, 22, 5, 2, 23, 5, 2, 24, 4, 3, 23, 5, 2, 23, 4, 3, 24, 4, 3, 23, 5, 2, 24, 5, 2, 25, 4, 3, 24, 5, 2, 24, 4, 3, 25, 4, 3, 24, 5, 2, 25, 5, 2, 26, 4, 3, 25, 5, 2, 25, 4, 3, 26, 4, 3, 25, 5, 2, 26, 5, 2, 27, 4, 3, 26, 5, 2, 26, 4, 2, 27, 4, 3, 26, 5, 2, 27, 4, 2, 27, 3, 3, 26, 4, 3, 26, 3, 2, 27, 3, 3, 26, 4, 2, 27, 3, 2, 27, 2, 3, 26, 3, 3, 26, 2, 3, 27, 2, 3, 26, 3, 2, 27, 3, 2, 28, 2, 3, 27, 3, 2, 27, 2, 2, 28, 2, 3, 27, 3, 2, 28, 2, 2, 28, 1, 3, 27, 2, 3, 27, 1, 2, 28, 1, 3, 27, 2, 2, 28, 1, 2, 28, 0, 3, 27, 1, 3, 27, 0, 2, 28, 0, 3, 27, 1, 2, 28, 0, 2, 28, -1, 3, 27, 0, 3, 27, -1, 2, 28, -1, 3, 27, 0, 2, 28, -1, 2, 28, -2, 3, 27, -1, 3, 27, -2, 2, 28, -2, 3, 27, -1, 2, 28, -3, 2, 28, -3, 2, 27, -2, 3, 27, -2, 2, 28, -3, 2, 28, -2, 3, 27, -3, 2, 27, -3, 3, 26, -2, 3, 26, -2, 3, 27, -3, 2, 27, -2, 3, 26, -3, 2, 27, -4, 3, 26, -3, 3, 26, -4, 2, 27, -4, 3, 26, -3, 2, 27, -5, 2, 27, -5, 2, 26, -4, 3, 26, -4, 2, 27, -5, 2, 27, -4, 3, 26, -4, 3, 26, -5, 2, 25, -4, 3, 25, -5, 2, 26, -5, 2, 25, -4, 3, 26, -4, 3, 25, -5, 2, 24, -4, 3, 24, -5, 2, 25, -5, 2, 24, -4, 3, 25, -4, 3, 23, -5, 2, 22, -4, 3, 22, -5, 2, 23, -5, 2, 22, -4, 3, 23, -4, 3, 22, -5, 2, 21, -4, 3, 21, -5, 2, 22, -5, 2, 21, -4, 3, 22, -4, 3, 21, -5, 2, 20, -4, 3, 20, -5, 2, 21, -5, 2, 20, -4, 3, 21, -4, 3, 20, -5, 2, 19, -4, 3, 19, -5, 2, 20, -5, 2, 19, -4, 3, 20, -4, 3, 24, -5, 2, 23, -4, 3, 23, -5, 2, 24, -5, 2, 23, -4, 3, 24, -4, 3, 19, -5, 2, 18, -4, 2, 18, -5, 2, 19, -5, 2, 18, -4, 3, 19, -3, 3, 19, -4, 2, 18, -3, 2, 18, -4, 3, 19, -4, 2, 18, -3, 3, 19, -2, 3, 19, -3, 2, 18, -2, 3, 18, -3, 3, 19, -3, 2, 18, -2, 3, 19, -2, 3, 18, -3, 2, 17, -2, 2, 17, -3, 2, 18, -3, 2, 17, -2, 3, 18, -1, 3, 18, -2, 2, 17, -1, 2, 17, -2, 3, 18, -2, 2, 17, -1, 3, 18, 0, 3, 18, -1, 2, 17, 0, 2, 17, -1, 3, 18, -1, 2, 17, 0, 3, 18, 1, 3, 18, 0, 2, 17, 1, 2, 17, 0, 3, 18, 0, 2, 17, 1, 3, 18, 2, 3, 18, 1, 2, 17, 2, 2, 17, 1, 3, 18, 1, 2, 17, 2, 3, 18, 2, 3, 18, 2, 2, 17, 3, 2, 17, 3, 2, 18, 2, 3, 18, 3, 2, 17, 6, 3, 28, 5, 2, 27, 6, 3, 27, 5, 3, 28, 5, 2, 27, 6, 3, 28, 5, 3, 28, 4, 2, 27, 5, 2, 27, 4, 2, 28, 4, 2, 27, 5, 3, 28, 5, 3, 29, 4, 2, 28, 5, 3, 28, 4, 3, 29, 4, 2, 28, 5, 3, 29, 4, 3, 29, 3, 2, 28, 4, 2, 28, 3, 2, 29, 3, 2, 28, 4, 3, 29, 4, 3, 30, 3, 2, 29, 4, 3, 29, 3, 2, 30, 3, 2, 29, 4, 3, 30, 4, 3, 31, 3, 2, 30, 4, 3, 30, 3, 2, 31, 3, 2, 30, 4, 3, 31, 4, 3, 32, 3, 2, 31, 4, 3, 31, 3, 2, 32, 3, 2, 31, 4, 3, 32, 3, 2, 33, 3, 2, 32, 4, 3, 32, 4, 2, 33, 3, 2, 33, 4, 3, 32, 5, 2, 33, 4, 3, 32, 5, 3, 32, 4, 2, 33, 4, 3, 32, 5, 2, 33, 6, 2, 33, 5, 3, 32, 6, 3, 32, 5, 2, 33, 5, 3, 32, 6, 2, 33, 7, 2, 33, 6, 3, 32, 7, 3, 32, 6, 2, 33, 6, 3, 32, 7, 2, 33, 8, 2, 33, 7, 3, 32, 8, 2, 32, 7, 2, 33, 7, 3, 32, 8, 2, 33, 8, 2, 32, 7, 3, 31, 8, 3, 31, 7, 3, 32, 7, 3, 31, 8, 2, 32, 9, 2, 32, 8, 3, 31, 9, 2, 31, 8, 2, 32, 8, 3, 31, 9, 2, 32, 9, 2, 31, 8, 3, 30, 9, 3, 30, 8, 3, 31, 8, 3, 30, 9, 2, 31, 10, 2, 31, 9, 3, 30, 10, 2, 30, 9, 2, 31, 9, 3, 30, 10, 2, 31, 10, 2, 30, 9, 3, 29, 10, 2, 29, 9, 3, 30, 9, 3, 29, 10, 2, 30, 10, 2, 29, 9, 3, 28, 10, 2, 28, 9, 3, 29, 9, 3, 28, 10, 2, 29, 10, 2, 28, 9, 3, 27, 10, 2, 27, 9, 3, 28, 9, 3, 27, 10, 2, 28, 9, 3, 27, 9, 2, 26, 10, 2, 26, 10, 2, 27, 9, 3, 27, 10, 2, 26, 9, 3, 27, 8, 2, 26, 9, 2, 26, 8, 3, 27, 8, 2, 26, 9, 3, 27, 8, 3, 27, 7, 2, 26, 8, 2, 26, 7, 3, 27, 7, 2, 26, 8, 3, 27, 7, 3, 27, 6, 2, 26, 7, 2, 26, 6, 3, 27, 6, 2, 26, 7, 3, 27, 6, 3, 27, 5, 2, 26, 6, 2, 26, 5, 2, 27, 5, 2, 26, 6, 3, 27, 14, 3, 32, 14, 2, 31, 15, 2, 31, 15, 2, 32, 14, 3, 32, 15, 2, 31, 13, 3, 32, 12, 2, 31, 13, 2, 31, 12, 3, 32, 12, 2, 31, 13, 3, 32, 12, 3, 32, 11, 2, 31, 12, 2, 31, 11, 3, 32, 11, 2, 31, 12, 3, 32, 11, 3, 32, 10, 2, 31, 11, 2, 31, 10, 3, 32, 10, 2, 31, 11, 3, 32, 10, 3, 32, 9, 2, 31, 10, 2, 31, 9, 2, 32, 9, 2, 31, 10, 3, 32, 14, 3, 32, 13, 2, 31, 14, 2, 31, 13, 3, 32, 13, 2, 31, 14, 3, 32, 10, 3, 33, 9, 2, 32, 10, 3, 32, 9, 2, 33, 9, 2, 32, 10, 3, 33, 10, 3, 34, 9, 2, 33, 10, 3, 33, 9, 2, 34, 9, 2, 33, 10, 3, 34, 10, 3, 35, 9, 2, 34, 10, 3, 34, 9, 2, 35, 9, 2, 34, 10, 3, 35, 10, 3, 36, 9, 2, 35, 10, 3, 35, 9, 2, 36, 9, 2, 35, 10, 3, 36, 9, 2, 37, 9, 2, 36, 10, 3, 36, 10, 2, 37, 9, 2, 37, 10, 3, 36, 11, 2, 37, 10, 3, 36, 11, 3, 36, 10, 2, 37, 10, 3, 36, 11, 2, 37, 12, 2, 37, 11, 3, 36, 12, 3, 36, 11, 2, 37, 11, 3, 36, 12, 2, 37, 13, 2, 37, 12, 3, 36, 13, 3, 36, 12, 2, 37, 12, 3, 36, 13, 2, 37, 14, 2, 37, 13, 3, 36, 14, 2, 36, 13, 2, 37, 13, 3, 36, 14, 2, 37, 14, 2, 36, 13, 3, 35, 14, 3, 35, 13, 3, 36, 13, 3, 35, 14, 2, 36, 15, 2, 36, 14, 3, 35, 15, 2, 35, 14, 2, 36, 14, 3, 35, 15, 2, 36, 15, 2, 35, 14, 3, 34, 15, 2, 34, 14, 3, 35, 14, 3, 34, 15, 2, 35, 15, 2, 34, 14, 3, 33, 15, 2, 33, 14, 3, 34, 14, 3, 33, 15, 2, 34, 15, 2, 33, 14, 3, 32, 15, 2, 32, 14, 3, 33, 14, 3, 32, 15, 2, 33, 16, 3, 31, 16, 2, 30, 16, 3, 30, 16, 2, 31, 16, 2, 30, 16, 3, 31, 16, 3, 32, 16, 2, 31, 16, 3, 31, 16, 2, 32, 16, 2, 31, 16, 3, 32, 17, 3, 32, 16, 2, 32, 16, 3, 32, 17, 2, 32, 16, 2, 32, 17, 3, 32, -8, 2, -1, -9, 1, -2, -8, 2, -2, -9, 1, -1, -9, 1, -2, -8, 2, -1, 18, 3, 31, 18, 2, 32, 18, 3, 32, 18, 2, 31, 18, 2, 32, 18, 3, 31, 18, 3, 30, 18, 2, 31, 18, 3, 31, 18, 2, 30, 18, 2, 31, 18, 3, 30, 17, 3, 30, 18, 2, 30, 18, 3, 30, 17, 2, 30, 18, 2, 30, 17, 3, 30, 16, 3, 30, 17, 2, 30, 17, 3, 30, 16, 2, 30, 17, 2, 30, 16, 3, 30, 19, 3, 29, 19, 2, 28, 19, 3, 28, 19, 2, 29, 19, 2, 28, 19, 3, 29, 19, 3, 28, 19, 2, 27, 19, 3, 27, 19, 2, 28, 19, 2, 27, 19, 3, 28, 19, 3, 27, 20, 2, 27, 20, 3, 27, 19, 2, 27, 20, 2, 27, 19, 3, 27, 19, 2, 23, 20, 1, 23, 20, 2, 23, 19, 1, 23, 20, 1, 23, 19, 2, 23, 19, 3, 25, 19, 2, 24, 19, 3, 24, 19, 2, 25, 19, 2, 24, 19, 3, 25, 19, 3, 24, 19, 2, 23, 19, 3, 23, 19, 2, 24, 19, 2, 23, 19, 3, 24, 19, 3, 20, 19, 2, 19, 19, 3, 19, 19, 2, 20, 19, 2, 19, 19, 3, 20, 19, 3, 19, 19, 2, 18, 19, 3, 18, 19, 2, 19, 19, 2, 18, 19, 3, 19, 19, 3, 18, 19, 2, 17, 19, 3, 17, 19, 2, 18, 19, 2, 17, 19, 3, 18, 20, 3, 23, 21, 2, 23, 21, 3, 23, 20, 2, 23, 21, 2, 23, 20, 3, 23, 19, 3, 23, 20, 2, 23, 20, 3, 23, 19, 2, 23, 20, 2, 23, 19, 3, 23, 19, 3, 17, 20, 2, 17, 20, 3, 17, 19, 2, 17, 20, 2, 17, 19, 3, 17, 20, 3, 17, 21, 2, 17, 21, 3, 17, 20, 2, 17, 21, 2, 17, 20, 3, 17, 21, 3, 17, 22, 2, 17, 22, 3, 17, 21, 2, 17, 22, 2, 17, 21, 3, 17, 22, 3, 17, 22, 2, 18, 22, 3, 18, 22, 2, 17, 22, 2, 18, 22, 3, 17, 22, 3, 19, 22, 2, 20, 22, 3, 20, 22, 2, 19, 22, 2, 20, 22, 3, 19, 22, 3, 18, 22, 2, 19, 22, 3, 19, 22, 2, 18, 22, 2, 19, 22, 3, 18, 21, 3, 23, 21, 2, 24, 21, 3, 24, 21, 2, 23, 21, 2, 24, 21, 3, 23, 21, 3, 24, 21, 2, 25, 21, 3, 25, 21, 2, 24, 21, 2, 25, 21, 3, 24, 21, 3, 27, 21, 2, 28, 21, 3, 28, 21, 2, 27, 21, 2, 28, 21, 3, 27, 21, 3, 28, 21, 2, 29, 21, 3, 29, 21, 2, 28, 21, 2, 29, 21, 3, 28, 20, 3, 29, 19, 2, 29, 19, 3, 29, 20, 2, 29, 19, 2, 29, 20, 3, 29, 21, 3, 29, 20, 2, 29, 20, 3, 29, 21, 2, 29, 20, 2, 29, 21, 3, 29, 20, 2, 25, 19, 1, 25, 19, 2, 25, 20, 1, 25, 19, 1, 25, 20, 2, 25, 20, 3, 25, 19, 2, 25, 19, 3, 25, 20, 2, 25, 19, 2, 25, 20, 3, 25, 22, 3, 20, 21, 2, 20, 21, 3, 20, 22, 2, 20, 21, 2, 20, 22, 3, 20, 21, 3, 20, 20, 2, 20, 20, 3, 20, 21, 2, 20, 20, 2, 20, 21, 3, 20, 20, 3, 20, 19, 2, 20, 19, 3, 20, 20, 2, 20, 19, 2, 20, 20, 3, 20, 16, 2, 31, 15, 2, 30, 16, 2, 30, 15, 2, 31, 15, 2, 30, 16, 2, 31, 15, 2, 31, 14, 2, 30, 15, 2, 30, 14, 2, 31, 14, 2, 30, 15, 2, 31, 14, 2, 31, 13, 2, 30, 14, 2, 30, 13, 2, 31, 13, 2, 30, 14, 2, 31, 13, 2, 31, 12, 2, 30, 13, 2, 30, 12, 2, 31, 12, 2, 30, 13, 2, 31, 12, 2, 31, 11, 2, 30, 12, 2, 30, 11, 2, 31, 11, 2, 30, 12, 2, 31, 11, 2, 31, 10, 2, 30, 11, 2, 30, 10, 2, 31, 10, 2, 30, 11, 2, 31, 11, 2, 30, 10, 2, 29, 11, 2, 29, 10, 2, 30, 10, 2, 29, 11, 2, 30, 11, 2, 29, 10, 2, 28, 11, 2, 28, 10, 2, 29, 10, 2, 28, 11, 2, 29, 11, 2, 28, 10, 2, 27, 11, 2, 27, 10, 2, 28, 10, 2, 27, 11, 2, 28, 11, 2, 27, 10, 2, 26, 11, 2, 26, 10, 2, 27, 10, 2, 26, 11, 2, 27, 13, 2, 29, 12, 2, 28, 13, 2, 28, 12, 2, 29, 12, 2, 28, 13, 2, 29, 12, 2, 29, 11, 2, 28, 12, 2, 28, 11, 2, 29, 11, 2, 28, 12, 2, 29, 12, 2, 30, 11, 2, 29, 12, 2, 29, 11, 2, 30, 11, 2, 29, 12, 2, 30, 13, 2, 30, 12, 2, 29, 13, 2, 29, 12, 2, 30, 12, 2, 29, 13, 2, 30, 14, 2, 30, 13, 2, 29, 14, 2, 29, 13, 2, 30, 13, 2, 29, 14, 2, 30, 15, 2, 30, 14, 2, 29, 15, 2, 29, 14, 2, 30, 14, 2, 29, 15, 2, 30, 15, 2, 29, 14, 2, 28, 15, 2, 28, 14, 2, 29, 14, 2, 28, 15, 2, 29, 15, 2, 28, 14, 2, 27, 15, 2, 27, 14, 2, 28, 14, 2, 27, 15, 2, 28, 14, 2, 28, 13, 2, 27, 14, 2, 27, 13, 2, 28, 13, 2, 27, 14, 2, 28, 13, 2, 27, 12, 2, 26, 13, 2, 26, 12, 2, 27, 12, 2, 26, 13, 2, 27, 12, 2, 27, 11, 2, 26, 12, 2, 26, 11, 2, 27, 11, 2, 26, 12, 2, 27, 13, 2, 28, 12, 2, 27, 13, 2, 27, 12, 2, 28, 12, 2, 27, 13, 2, 28, 14, 2, 29, 13, 2, 28, 14, 2, 28, 13, 2, 29, 13, 2, 28, 14, 2, 29, 14, 2, 27, 13, 2, 26, 14, 2, 26, 13, 2, 27, 13, 2, 26, 14, 2, 27, 13, 2, 26, 12, 2, 25, 13, 2, 25, 12, 2, 26, 12, 2, 25, 13, 2, 26, 12, 2, 26, 11, 2, 25, 12, 2, 25, 11, 2, 26, 11, 2, 25, 12, 2, 26, 12, 2, 28, 11, 2, 27, 12, 2, 27, 11, 2, 28, 11, 2, 27, 12, 2, 28, 15, 2, 26, 14, 2, 25, 15, 2, 25, 14, 2, 26, 14, 2, 25, 15, 2, 26, 14, 2, 25, 13, 2, 24, 14, 2, 24, 13, 2, 25, 13, 2, 24, 14, 2, 25, 13, 2, 24, 12, 2, 23, 13, 2, 23, 12, 2, 24, 12, 2, 23, 13, 2, 24, 12, 2, 25, 11, 2, 24, 12, 2, 24, 11, 2, 25, 11, 2, 24, 12, 2, 25, 15, 2, 25, 14, 2, 24, 15, 2, 24, 14, 2, 25, 14, 2, 24, 15, 2, 25, 13, 2, 25, 12, 2, 24, 13, 2, 24, 12, 2, 25, 12, 2, 24, 13, 2, 25, 14, 2, 24, 13, 2, 23, 14, 2, 23, 13, 2, 24, 13, 2, 23, 14, 2, 24, 12, 2, 24, 11, 2, 23, 12, 2, 23, 11, 2, 24, 11, 2, 23, 12, 2, 24, 15, 2, 27, 14, 2, 26, 15, 2, 26, 14, 2, 27, 14, 2, 26, 15, 2, 27, 14, 2, 26, 13, 2, 25, 14, 2, 25, 13, 2, 26, 13, 2, 25, 14, 2, 26, 11, 2, 25, 10, 2, 24, 11, 2, 24, 10, 2, 25, 10, 2, 24, 11, 2, 25, 11, 2, 26, 10, 2, 25, 11, 2, 25, 10, 2, 26, 10, 2, 25, 11, 2, 26, 12, 2, 23, 11, 2, 22, 12, 2, 22, 11, 2, 23, 11, 2, 22, 12, 2, 23, 13, 2, 23, 12, 2, 22, 13, 2, 22, 12, 2, 23, 12, 2, 22, 13, 2, 23, 15, 2, 24, 14, 2, 23, 15, 2, 23, 14, 2, 24, 14, 2, 23, 15, 2, 24, 14, 2, 23, 13, 2, 22, 14, 2, 22, 13, 2, 23, 13, 2, 22, 14, 2, 23, 13, 2, 22, 12, 2, 21, 13, 2, 21, 12, 2, 22, 12, 2, 21, 13, 2, 22, 11, 2, 24, 10, 2, 23, 11, 2, 23, 10, 2, 24, 10, 2, 23, 11, 2, 24, 11, 2, 23, 10, 2, 22, 11, 2, 22, 10, 2, 23, 10, 2, 22, 11, 2, 23, 12, 2, 22, 11, 2, 21, 12, 2, 21, 11, 2, 22, 11, 2, 21, 12, 2, 22, 11, 2, 22, 10, 2, 21, 11, 2, 21, 10, 2, 22, 10, 2, 21, 11, 2, 22, 14, 2, 22, 13, 2, 21, 14, 2, 21, 13, 2, 22, 13, 2, 21, 14, 2, 22, 16, 2, 30, 15, 2, 29, 16, 2, 29, 15, 2, 30, 15, 2, 29, 16, 2, 30, -4, 2, 32, -5, 2, 31, -4, 2, 31, -5, 2, 32, -5, 2, 31, -4, 2, 32, -4, 2, 31, -5, 2, 30, -4, 2, 30, -5, 2, 31, -5, 2, 30, -4, 2, 31, -3, 2, 32, -4, 2, 31, -3, 2, 31, -4, 2, 32, -4, 2, 31, -3, 2, 32, -4, 2, 28, -5, 2, 27, -4, 2, 27, -5, 2, 28, -5, 2, 27, -4, 2, 28, 16, 2, 32, 15, 2, 31, 16, 2, 31, 15, 2, 32, 15, 2, 31, 16, 2, 32, 16, 2, 33, 15, 2, 32, 16, 2, 32, 15, 2, 33, 15, 2, 32, 16, 2, 33, 16, 2, 34, 15, 2, 33, 16, 2, 33, 15, 2, 34, 15, 2, 33, 16, 2, 34, 16, 2, 35, 15, 2, 34, 16, 2, 34, 15, 2, 35, 15, 2, 34, 16, 2, 35, 16, 2, 36, 15, 2, 35, 16, 2, 35, 15, 2, 36, 15, 2, 35, 16, 2, 36, 15, 2, 37, 14, 2, 36, 15, 2, 36, 14, 2, 37, 14, 2, 36, 15, 2, 37, 16, 2, 37, 15, 2, 36, 16, 2, 36, 15, 2, 37, 15, 2, 36, 16, 2, 37, 15, 2, 38, 14, 2, 37, 15, 2, 37, 14, 2, 38, 14, 2, 37, 15, 2, 38, 16, 2, 38, 15, 2, 37, 16, 2, 37, 15, 2, 38, 15, 2, 37, 16, 2, 38, 14, 2, 38, 13, 2, 37, 14, 2, 37, 13, 2, 38, 13, 2, 37, 14, 2, 38, 13, 2, 38, 12, 2, 37, 13, 2, 37, 12, 2, 38, 12, 2, 37, 13, 2, 38, 12, 2, 38, 11, 2, 37, 12, 2, 37, 11, 2, 38, 11, 2, 37, 12, 2, 38, 11, 2, 38, 10, 2, 37, 11, 2, 37, 10, 2, 38, 10, 2, 37, 11, 2, 38, 10, 2, 38, 9, 2, 37, 10, 2, 37, 9, 2, 38, 9, 2, 37, 10, 2, 38, 9, 2, 38, 8, 2, 37, 9, 2, 37, 8, 2, 38, 8, 2, 37, 9, 2, 38, 9, 2, 37, 8, 2, 36, 9, 2, 36, 8, 2, 37, 8, 2, 36, 9, 2, 37, 9, 2, 36, 8, 2, 35, 9, 2, 35, 8, 2, 36, 8, 2, 35, 9, 2, 36, 9, 2, 35, 8, 2, 34, 9, 2, 34, 8, 2, 35, 8, 2, 34, 9, 2, 35, 9, 2, 34, 8, 2, 33, 9, 2, 33, 8, 2, 34, 8, 2, 33, 9, 2, 34, 9, 2, 33, 8, 2, 32, 9, 2, 32, 8, 2, 33, 8, 2, 32, 9, 2, 33, 8, 2, 34, 7, 2, 33, 8, 2, 33, 7, 2, 34, 7, 2, 33, 8, 2, 34, 7, 2, 34, 6, 2, 33, 7, 2, 33, 6, 2, 34, 6, 2, 33, 7, 2, 34, 6, 2, 34, 5, 2, 33, 6, 2, 33, 5, 2, 34, 5, 2, 33, 6, 2, 34, 5, 2, 34, 4, 2, 33, 5, 2, 33, 4, 2, 34, 4, 2, 33, 5, 2, 34, 4, 2, 35, 3, 2, 34, 4, 2, 34, 3, 2, 35, 3, 2, 34, 4, 2, 35, 5, 2, 35, 4, 2, 34, 5, 2, 34, 4, 2, 35, 4, 2, 34, 5, 2, 35, 6, 2, 36, 5, 2, 35, 6, 2, 35, 5, 2, 36, 5, 2, 35, 6, 2, 36, 7, 2, 35, 6, 2, 34, 7, 2, 34, 6, 2, 35, 6, 2, 34, 7, 2, 35, 8, 2, 35, 7, 2, 34, 8, 2, 34, 7, 2, 35, 7, 2, 34, 8, 2, 35, 8, 2, 36, 7, 2, 35, 8, 2, 35, 7, 2, 36, 7, 2, 35, 8, 2, 36, 7, 2, 36, 6, 2, 35, 7, 2, 35, 6, 2, 36, 6, 2, 35, 7, 2, 36, 6, 2, 35, 5, 2, 34, 6, 2, 34, 5, 2, 35, 5, 2, 34, 6, 2, 35, 5, 2, 36, 4, 2, 35, 5, 2, 35, 4, 2, 36, 4, 2, 35, 5, 2, 36, 4, 2, 36, 3, 2, 35, 4, 2, 35, 3, 2, 36, 3, 2, 35, 4, 2, 36, 3, 2, 36, 2, 2, 35, 3, 2, 35, 2, 2, 36, 2, 2, 35, 3, 2, 36, 4, 2, 34, 3, 2, 33, 4, 2, 33, 3, 2, 34, 3, 2, 33, 4, 2, 34, 8, 2, 37, 7, 2, 36, 8, 2, 36, 7, 2, 37, 7, 2, 36, 8, 2, 37, 7, 2, 37, 6, 2, 36, 7, 2, 36, 6, 2, 37, 6, 2, 36, 7, 2, 37, 3, 2, 35, 2, 2, 34, 3, 2, 34, 2, 2, 35, 2, 2, 34, 3, 2, 35, 3, 2, 34, 2, 2, 33, 3, 2, 33, 2, 2, 34, 2, 2, 33, 3, 2, 34, 3, 2, 33, 2, 2, 32, 3, 2, 32, 2, 2, 33, 2, 2, 32, 3, 2, 33, 3, 2, 32, 2, 2, 31, 3, 2, 31, 2, 2, 32, 2, 2, 31, 3, 2, 32, 3, 2, 31, 2, 2, 30, 3, 2, 30, 2, 2, 31, 2, 2, 30, 3, 2, 31, 3, 2, 30, 2, 2, 29, 3, 2, 29, 2, 2, 30, 2, 2, 29, 3, 2, 30, 3, 2, 29, 2, 2, 28, 3, 2, 28, 2, 2, 29, 2, 2, 28, 3, 2, 29, 4, 2, 28, 3, 2, 27, 4, 2, 27, 3, 2, 28, 3, 2, 27, 4, 2, 28, 2, 2, 30, 1, 2, 29, 2, 2, 29, 1, 2, 30, 1, 2, 29, 2, 2, 30, 1, 2, 29, 0, 2, 28, 1, 2, 28, 0, 2, 29, 0, 2, 28, 1, 2, 29, -1, 2, 29, -2, 2, 28, -1, 2, 28, -2, 2, 29, -2, 2, 28, -1, 2, 29, -2, 2, 29, -3, 2, 28, -2, 2, 28, -3, 2, 29, -3, 2, 28, -2, 2, 29, -2, 2, 30, -3, 2, 29, -2, 2, 29, -3, 2, 30, -3, 2, 29, -2, 2, 30, -1, 2, 30, -2, 2, 29, -1, 2, 29, -2, 2, 30, -2, 2, 29, -1, 2, 30, 1, 2, 30, 0, 2, 29, 1, 2, 29, 0, 2, 30, 0, 2, 29, 1, 2, 30, 2, 2, 29, 1, 2, 28, 2, 2, 28, 1, 2, 29, 1, 2, 28, 2, 2, 29, 0, 2, 29, -1, 2, 28, 0, 2, 28, -1, 2, 29, -1, 2, 28, 0, 2, 29, 0, 2, 31, -1, 2, 30, 0, 2, 30, -1, 2, 31, -1, 2, 30, 0, 2, 31, 1, 2, 31, 0, 2, 30, 1, 2, 30, 0, 2, 31, 0, 2, 30, 1, 2, 31, 2, 2, 32, 1, 2, 31, 2, 2, 31, 1, 2, 32, 1, 2, 31, 2, 2, 32, 2, 2, 31, 1, 2, 30, 2, 2, 30, 1, 2, 31, 1, 2, 30, 2, 2, 31, 0, 2, 30, -1, 2, 29, 0, 2, 29, -1, 2, 30, -1, 2, 29, 0, 2, 30, -1, 2, 31, -2, 2, 30, -1, 2, 30, -2, 2, 31, -2, 2, 30, -1, 2, 31, -2, 2, 31, -3, 2, 30, -2, 2, 30, -3, 2, 31, -3, 2, 30, -2, 2, 31, 0, 2, 32, -1, 2, 31, 0, 2, 31, -1, 2, 32, -1, 2, 31, 0, 2, 32, 1, 2, 32, 0, 2, 31, 1, 2, 31, 0, 2, 32, 0, 2, 31, 1, 2, 32, -1, 2, 32, -2, 2, 31, -1, 2, 31, -2, 2, 32, -2, 2, 31, -1, 2, 32, 2, 2, 33, 1, 2, 32, 2, 2, 32, 1, 2, 33, 1, 2, 32, 2, 2, 33, 1, 2, 33, 0, 2, 32, 1, 2, 32, 0, 2, 33, 0, 2, 32, 1, 2, 33, 0, 2, 33, -1, 2, 32, 0, 2, 32, -1, 2, 33, -1, 2, 32, 0, 2, 33, -2, 2, 32, -3, 2, 31, -2, 2, 31, -3, 2, 32, -3, 2, 31, -2, 2, 32, -1, 2, 33, -2, 2, 32, -1, 2, 32, -2, 2, 33, -2, 2, 32, -1, 2, 33, -2, 2, 33, -3, 2, 32, -2, 2, 32, -3, 2, 33, -3, 2, 32, -2, 2, 33, -3, 2, 28, -4, 2, 27, -3, 2, 27, -4, 2, 28, -4, 2, 27, -3, 2, 28, -3, 2, 29, -4, 2, 28, -3, 2, 28, -4, 2, 29, -4, 2, 28, -3, 2, 29, -4, 2, 29, -5, 2, 28, -4, 2, 28, -5, 2, 29, -5, 2, 28, -4, 2, 29, -4, 2, 30, -5, 2, 29, -4, 2, 29, -5, 2, 30, -5, 2, 29, -4, 2, 30, -3, 2, 30, -4, 2, 29, -3, 2, 29, -4, 2, 30, -4, 2, 29, -3, 2, 30, -3, 2, 31, -4, 2, 30, -3, 2, 30, -4, 2, 31, -4, 2, 30, -3, 2, 31, -5, 2, 29, -6, 2, 28, -5, 2, 28, -6, 2, 29, -6, 2, 28, -5, 2, 29, -5, 2, 28, -6, 2, 27, -5, 2, 27, -6, 2, 28, -6, 2, 27, -5, 2, 28, -5, 2, 25, -6, 2, 24, -5, 2, 24, -6, 2, 25, -6, 2, 24, -5, 2, 25, -5, 2, 23, -6, 2, 22, -5, 2, 22, -6, 2, 23, -6, 2, 22, -5, 2, 23, -5, 2, 21, -6, 2, 20, -5, 2, 20, -6, 2, 21, -6, 2, 20, -5, 2, 21, -5, 2, 20, -6, 2, 19, -5, 2, 19, -6, 2, 20, -6, 2, 19, -5, 2, 20, -5, 2, 19, -6, 2, 18, -5, 2, 18, -6, 2, 19, -6, 2, 18, -5, 2, 19, -5, 2, 18, -6, 2, 17, -5, 2, 17, -6, 2, 18, -6, 2, 17, -5, 2, 18, -5, 2, 22, -6, 2, 21, -5, 2, 21, -6, 2, 22, -6, 2, 21, -5, 2, 22, -5, 2, 24, -6, 2, 23, -5, 2, 23, -6, 2, 24, -6, 2, 23, -5, 2, 24, -5, 2, 26, -6, 2, 25, -5, 2, 25, -6, 2, 26, -6, 2, 25, -5, 2, 26, -5, 2, 27, -6, 2, 26, -5, 2, 26, -6, 2, 27, -6, 2, 26, -5, 2, 27, -6, 2, 29, -7, 2, 28, -6, 2, 28, -7, 2, 29, -7, 2, 28, -6, 2, 29, -6, 2, 28, -7, 2, 27, -6, 2, 27, -7, 2, 28, -7, 2, 27, -6, 2, 28, -6, 2, 27, -7, 2, 26, -6, 2, 26, -7, 2, 27, -7, 2, 26, -6, 2, 27, -6, 2, 25, -7, 2, 24, -6, 2, 24, -7, 2, 25, -7, 2, 24, -6, 2, 25, -6, 2, 24, -7, 2, 23, -6, 2, 23, -7, 2, 24, -7, 2, 23, -6, 2, 24, -6, 2, 23, -7, 2, 22, -6, 2, 22, -7, 2, 23, -7, 2, 22, -6, 2, 23, -6, 2, 22, -7, 2, 21, -6, 2, 21, -7, 2, 22, -7, 2, 21, -6, 2, 22, -6, 2, 21, -7, 2, 20, -6, 2, 20, -7, 2, 21, -7, 2, 20, -6, 2, 21, -6, 2, 20, -7, 2, 19, -6, 2, 19, -7, 2, 20, -7, 2, 19, -6, 2, 20, -6, 2, 19, -7, 2, 18, -6, 2, 18, -7, 2, 19, -7, 2, 18, -6, 2, 19, -7, 2, 19, -8, 2, 18, -7, 2, 18, -8, 2, 19, -8, 2, 18, -7, 2, 19, -8, 2, 20, -9, 2, 19, -8, 2, 19, -9, 2, 20, -9, 2, 19, -8, 2, 20, -7, 2, 22, -8, 2, 21, -7, 2, 21, -8, 2, 22, -8, 2, 21, -7, 2, 22, -7, 2, 23, -8, 2, 22, -7, 2, 22, -8, 2, 23, -8, 2, 22, -7, 2, 23, -7, 2, 25, -8, 2, 24, -7, 2, 24, -8, 2, 25, -8, 2, 24, -7, 2, 25, -6, 2, 26, -7, 2, 25, -6, 2, 25, -7, 2, 26, -7, 2, 25, -6, 2, 26, -7, 2, 21, -8, 2, 20, -7, 2, 20, -8, 2, 21, -8, 2, 20, -7, 2, 21, -7, 2, 20, -8, 2, 19, -7, 2, 19, -8, 2, 20, -8, 2, 19, -7, 2, 20, -8, 2, 21, -9, 2, 20, -8, 2, 20, -9, 2, 21, -9, 2, 20, -8, 2, 21, -8, 2, 22, -9, 2, 21, -8, 2, 21, -9, 2, 22, -9, 2, 21, -8, 2, 22, -8, 2, 23, -9, 2, 22, -8, 2, 22, -9, 2, 23, -9, 2, 22, -8, 2, 23, -8, 2, 24, -9, 2, 23, -8, 2, 23, -9, 2, 24, -9, 2, 23, -8, 2, 24, -7, 2, 26, -8, 2, 25, -7, 2, 25, -8, 2, 26, -8, 2, 25, -7, 2, 26, -7, 2, 27, -8, 2, 26, -7, 2, 26, -8, 2, 27, -8, 2, 26, -7, 2, 27, -8, 2, 27, -9, 2, 26, -8, 2, 26, -9, 2, 27, -9, 2, 26, -8, 2, 27, -7, 2, 28, -8, 2, 27, -7, 2, 27, -8, 2, 28, -8, 2, 27, -7, 2, 28, -8, 2, 28, -9, 2, 27, -8, 2, 27, -9, 2, 28, -9, 2, 27, -8, 2, 28, -7, 2, 29, -8, 2, 28, -7, 2, 28, -8, 2, 29, -8, 2, 28, -7, 2, 29, -7, 2, 24, -8, 2, 23, -7, 2, 23, -8, 2, 24, -8, 2, 23, -7, 2, 24, -8, 2, 25, -9, 2, 24, -8, 2, 24, -9, 2, 25, -9, 2, 24, -8, 2, 25, -8, 2, 26, -9, 2, 25, -8, 2, 25, -9, 2, 26, -9, 2, 25, -8, 2, 26, -7, 2, 18, -8, 2, 17, -7, 2, 17, -8, 2, 18, -8, 2, 17, -7, 2, 18, -8, 2, 18, -9, 2, 17, -8, 2, 17, -9, 2, 18, -9, 2, 17, -8, 2, 18, -8, 2, 19, -9, 2, 18, -8, 2, 18, -9, 2, 19, -9, 2, 18, -8, 2, 19, -8, 2, 29, -9, 2, 28, -8, 2, 28, -9, 2, 29, -9, 2, 28, -8, 2, 29, -5, 2, 30, -6, 2, 29, -5, 2, 29, -6, 2, 30, -6, 2, 29, -5, 2, 30, -6, 2, 30, -7, 2, 29, -6, 2, 29, -7, 2, 30, -7, 2, 29, -6, 2, 30, -6, 2, 18, -7, 2, 17, -6, 2, 17, -7, 2, 18, -7, 2, 17, -6, 2, 18, -4, 2, 18, -5, 2, 17, -4, 2, 17, -5, 2, 18, -5, 2, 17, -4, 2, 18, -3, 2, 18, -4, 2, 17, -3, 2, 17, -4, 2, 18, -4, 2, 17, -3, 2, 18, -3, 2, 17, -4, 2, 16, -3, 2, 16, -4, 2, 17, -4, 2, 16, -3, 2, 17, -4, 2, 16, -5, 2, 15, -4, 2, 15, -5, 2, 16, -5, 2, 15, -4, 2, 16, -5, 2, 16, -6, 2, 15, -5, 2, 15, -6, 2, 16, -6, 2, 15, -5, 2, 16, -5, 2, 17, -6, 2, 16, -5, 2, 16, -6, 2, 17, -6, 2, 16, -5, 2, 17, -6, 2, 17, -7, 2, 16, -6, 2, 16, -7, 2, 17, -7, 2, 16, -6, 2, 17, -4, 2, 17, -5, 2, 16, -4, 2, 16, -5, 2, 17, -5, 2, 16, -4, 2, 17, -3, 2, 16, -4, 2, 15, -3, 2, 15, -4, 2, 16, -4, 2, 15, -3, 2, 16, -2, 2, 16, -3, 2, 15, -2, 2, 15, -3, 2, 16, -3, 2, 15, -2, 2, 16, -1, 2, 16, -2, 2, 15, -1, 2, 15, -2, 2, 16, -2, 2, 15, -1, 2, 16, 0, 2, 16, -1, 2, 15, 0, 2, 15, -1, 2, 16, -1, 2, 15, 0, 2, 16, 1, 2, 17, 0, 2, 16, 1, 2, 16, 0, 2, 17, 0, 2, 16, 1, 2, 17, 2, 2, 17, 1, 2, 16, 2, 2, 16, 1, 2, 17, 1, 2, 16, 2, 2, 17, 3, 2, 17, 2, 2, 16, 3, 2, 16, 2, 2, 17, 2, 2, 16, 3, 2, 17, 4, 2, 17, 3, 2, 16, 4, 2, 16, 3, 2, 17, 3, 2, 16, 4, 2, 17, 5, 2, 17, 4, 2, 16, 5, 2, 16, 4, 2, 17, 4, 2, 16, 5, 2, 17, 5, 2, 16, 4, 2, 15, 5, 2, 15, 4, 2, 16, 4, 2, 15, 5, 2, 16, 4, 2, 16, 3, 2, 15, 4, 2, 15, 3, 2, 16, 3, 2, 15, 4, 2, 16, 3, 2, 16, 2, 2, 15, 3, 2, 15, 2, 2, 16, 2, 2, 15, 3, 2, 16, 2, 2, 16, 1, 2, 15, 2, 2, 15, 1, 2, 16, 1, 2, 15, 2, 2, 16, 1, 2, 16, 0, 2, 15, 1, 2, 15, 0, 2, 16, 0, 2, 15, 1, 2, 16, -1, 2, 17, -2, 2, 16, -1, 2, 16, -2, 2, 17, -2, 2, 16, -1, 2, 17, -2, 2, 17, -3, 2, 16, -2, 2, 16, -3, 2, 17, -3, 2, 16, -2, 2, 17, 0, 2, 17, -1, 2, 16, 0, 2, 16, -1, 2, 17, -1, 2, 16, 0, 2, 17, 4, 2, 18, 3, 2, 17, 4, 2, 17, 3, 2, 18, 3, 2, 17, 4, 2, 18, 5, 2, 18, 4, 2, 17, 5, 2, 17, 4, 2, 18, 4, 2, 17, 5, 2, 18, 6, 2, 18, 5, 2, 17, 6, 2, 17, 5, 2, 18, 5, 2, 17, 6, 2, 18, 6, 2, 17, 5, 2, 16, 6, 2, 16, 5, 2, 17, 5, 2, 16, 6, 2, 17, 6, 2, 16, 5, 2, 15, 6, 2, 15, 5, 2, 16, 5, 2, 15, 6, 2, 16, 6, 2, 15, 5, 2, 14, 6, 2, 14, 5, 2, 15, 5, 2, 14, 6, 2, 15, 6, 2, 14, 5, 2, 13, 6, 2, 13, 5, 2, 14, 5, 2, 13, 6, 2, 14, 6, 2, 13, 5, 2, 12, 6, 2, 12, 5, 2, 13, 5, 2, 12, 6, 2, 13, 6, 2, 12, 5, 2, 11, 6, 2, 11, 5, 2, 12, 5, 2, 11, 6, 2, 12, 6, 2, 11, 5, 2, 10, 6, 2, 10, 5, 2, 11, 5, 2, 10, 6, 2, 11, 6, 2, 10, 5, 2, 9, 6, 2, 9, 5, 2, 10, 5, 2, 9, 6, 2, 10, 6, 2, 9, 5, 2, 8, 6, 2, 8, 5, 2, 9, 5, 2, 8, 6, 2, 9, 6, 2, 8, 5, 2, 7, 6, 2, 7, 5, 2, 8, 5, 2, 7, 6, 2, 8, 6, 2, 7, 5, 2, 6, 6, 2, 6, 5, 2, 7, 5, 2, 6, 6, 2, 7, 10, 2, 26, 9, 2, 25, 10, 2, 25, 9, 2, 26, 9, 2, 25, 10, 2, 26, 9, 2, 26, 8, 2, 25, 9, 2, 25, 8, 2, 26, 8, 2, 25, 9, 2, 26, 8, 2, 26, 7, 2, 25, 8, 2, 25, 7, 2, 26, 7, 2, 25, 8, 2, 26, 7, 2, 26, 6, 2, 25, 7, 2, 25, 6, 2, 26, 6, 2, 25, 7, 2, 26, 6, 2, 26, 5, 2, 25, 6, 2, 25, 5, 2, 26, 5, 2, 25, 6, 2, 26, 6, 2, 25, 5, 2, 24, 6, 2, 24, 5, 2, 25, 5, 2, 24, 6, 2, 25, 6, 2, 24, 5, 2, 23, 6, 2, 23, 5, 2, 24, 5, 2, 23, 6, 2, 24, 6, 2, 23, 5, 2, 22, 6, 2, 22, 5, 2, 23, 5, 2, 22, 6, 2, 23, 7, 2, 21, 6, 2, 20, 7, 2, 20, 6, 2, 21, 6, 2, 20, 7, 2, 21, 7, 2, 20, 6, 2, 19, 7, 2, 19, 6, 2, 20, 6, 2, 19, 7, 2, 20, 7, 2, 19, 6, 2, 18, 7, 2, 18, 6, 2, 19, 6, 2, 18, 7, 2, 19, 7, 2, 18, 6, 2, 17, 7, 2, 17, 6, 2, 18, 6, 2, 17, 7, 2, 18, 7, 2, 22, 6, 2, 21, 7, 2, 21, 6, 2, 22, 6, 2, 21, 7, 2, 22, 8, 2, 22, 7, 2, 21, 8, 2, 21, 7, 2, 22, 7, 2, 21, 8, 2, 22, 9, 2, 23, 8, 2, 22, 9, 2, 22, 8, 2, 23, 8, 2, 22, 9, 2, 23, 10, 2, 24, 9, 2, 23, 10, 2, 23, 9, 2, 24, 9, 2, 23, 10, 2, 24, 10, 2, 25, 9, 2, 24, 10, 2, 24, 9, 2, 25, 9, 2, 24, 10, 2, 25, 9, 2, 25, 8, 2, 24, 9, 2, 24, 8, 2, 25, 8, 2, 24, 9, 2, 25, 8, 2, 25, 7, 2, 24, 8, 2, 24, 7, 2, 25, 7, 2, 24, 8, 2, 25, 7, 2, 24, 6, 2, 23, 7, 2, 23, 6, 2, 24, 6, 2, 23, 7, 2, 24, 7, 2, 23, 6, 2, 22, 7, 2, 22, 6, 2, 23, 6, 2, 22, 7, 2, 23, 7, 2, 25, 6, 2, 24, 7, 2, 24, 6, 2, 25, 6, 2, 24, 7, 2, 25, 6, 2, 22, 5, 2, 21, 6, 2, 21, 5, 2, 22, 5, 2, 21, 6, 2, 22, 6, 2, 21, 5, 2, 20, 6, 2, 20, 5, 2, 21, 5, 2, 20, 6, 2, 21, 6, 2, 20, 5, 2, 19, 6, 2, 19, 5, 2, 20, 5, 2, 19, 6, 2, 20, 6, 2, 19, 5, 2, 18, 6, 2, 18, 5, 2, 19, 5, 2, 18, 6, 2, 19, 9, 2, 24, 8, 2, 23, 9, 2, 23, 8, 2, 24, 8, 2, 23, 9, 2, 24, 8, 2, 23, 7, 2, 22, 8, 2, 22, 7, 2, 23, 7, 2, 22, 8, 2, 23, 8, 2, 24, 7, 2, 23, 8, 2, 23, 7, 2, 24, 7, 2, 23, 8, 2, 24, 10, 2, 23, 9, 2, 22, 10, 2, 22, 9, 2, 23, 9, 2, 22, 10, 2, 23, 10, 2, 22, 9, 2, 21, 10, 2, 21, 9, 2, 22, 9, 2, 21, 10, 2, 22, 7, 2, 15, 6, 2, 14, 7, 2, 14, 6, 2, 15, 6, 2, 14, 7, 2, 15, 7, 2, 17, 6, 2, 16, 7, 2, 16, 6, 2, 17, 6, 2, 16, 7, 2, 17, 8, 2, 20, 7, 2, 19, 8, 2, 19, 7, 2, 20, 7, 2, 19, 8, 2, 20, 9, 2, 22, 8, 2, 21, 9, 2, 21, 8, 2, 22, 8, 2, 21, 9, 2, 22, 8, 2, 21, 7, 2, 20, 8, 2, 20, 7, 2, 21, 7, 2, 20, 8, 2, 21, 7, 2, 13, 6, 2, 12, 7, 2, 12, 6, 2, 13, 6, 2, 12, 7, 2, 13, 7, 2, 14, 6, 2, 13, 7, 2, 13, 6, 2, 14, 6, 2, 13, 7, 2, 14, 8, 2, 19, 7, 2, 18, 8, 2, 18, 7, 2, 19, 7, 2, 18, 8, 2, 19, 8, 2, 18, 7, 2, 17, 8, 2, 17, 7, 2, 18, 7, 2, 17, 8, 2, 18, 8, 2, 16, 7, 2, 15, 8, 2, 15, 7, 2, 16, 7, 2, 15, 8, 2, 16, 7, 2, 16, 6, 2, 15, 7, 2, 15, 6, 2, 16, 6, 2, 15, 7, 2, 16, 8, 2, 17, 7, 2, 16, 8, 2, 16, 7, 2, 17, 7, 2, 16, 8, 2, 17, -7, 2, 17, -8, 2, 16, -7, 2, 16, -8, 2, 17, -8, 2, 16, -7, 2, 17, -7, 2, 16, -8, 2, 15, -7, 2, 15, -8, 2, 16, -8, 2, 15, -7, 2, 16, -6, 2, 15, -7, 2, 14, -6, 2, 14, -7, 2, 15, -7, 2, 14, -6, 2, 15, -6, 2, 14, -7, 2, 13, -6, 2, 13, -7, 2, 14, -7, 2, 13, -6, 2, 14, -6, 2, 13, -7, 2, 12, -6, 2, 12, -7, 2, 13, -7, 2, 12, -6, 2, 13, -6, 2, 12, -7, 2, 11, -6, 2, 11, -7, 2, 12, -7, 2, 11, -6, 2, 12, -6, 2, 11, -7, 2, 10, -6, 2, 10, -7, 2, 11, -7, 2, 10, -6, 2, 11, -7, 2, 9, -8, 2, 8, -7, 2, 8, -8, 2, 9, -8, 2, 8, -7, 2, 9, -7, 2, 8, -8, 2, 7, -7, 2, 7, -8, 2, 8, -8, 2, 7, -7, 2, 8, -6, 2, 7, -7, 2, 6, -6, 2, 6, -7, 2, 7, -7, 2, 6, -6, 2, 7, -5, 2, 7, -6, 2, 6, -5, 2, 6, -6, 2, 7, -6, 2, 6, -5, 2, 7, -5, 2, 8, -6, 2, 7, -5, 2, 7, -6, 2, 8, -6, 2, 7, -5, 2, 8, -5, 2, 9, -6, 2, 8, -5, 2, 8, -6, 2, 9, -6, 2, 8, -5, 2, 9, -5, 2, 10, -6, 2, 9, -5, 2, 9, -6, 2, 10, -6, 2, 9, -5, 2, 10, -5, 2, 12, -6, 2, 11, -5, 2, 11, -6, 2, 12, -6, 2, 11, -5, 2, 12, -5, 2, 13, -6, 2, 12, -5, 2, 12, -6, 2, 13, -6, 2, 12, -5, 2, 13, -5, 2, 14, -6, 2, 13, -5, 2, 13, -6, 2, 14, -6, 2, 13, -5, 2, 14, -5, 2, 15, -6, 2, 14, -5, 2, 14, -6, 2, 15, -6, 2, 14, -5, 2, 15, -6, 2, 16, -7, 2, 15, -6, 2, 15, -7, 2, 16, -7, 2, 15, -6, 2, 16, -5, 2, 11, -6, 2, 10, -5, 2, 10, -6, 2, 11, -6, 2, 10, -5, 2, 11, -6, 2, 10, -7, 2, 9, -6, 2, 9, -7, 2, 10, -7, 2, 9, -6, 2, 10, -6, 2, 9, -7, 2, 8, -6, 2, 8, -7, 2, 9, -7, 2, 8, -6, 2, 9, -6, 2, 8, -7, 2, 7, -6, 2, 7, -7, 2, 8, -7, 2, 7, -6, 2, 8, -7, 2, 10, -8, 2, 9, -7, 2, 9, -8, 2, 10, -8, 2, 9, -7, 2, 10, -7, 2, 12, -8, 2, 11, -7, 2, 11, -8, 2, 12, -8, 2, 11, -7, 2, 12, -7, 2, 15, -8, 2, 14, -7, 2, 14, -8, 2, 15, -8, 2, 14, -7, 2, 15, -7, 2, 14, -8, 2, 13, -7, 2, 13, -8, 2, 14, -8, 2, 13, -7, 2, 14, -7, 2, 13, -8, 2, 12, -7, 2, 12, -8, 2, 13, -8, 2, 12, -7, 2, 13, -7, 2, 11, -8, 2, 10, -7, 2, 10, -8, 2, 11, -8, 2, 10, -7, 2, 11, -7, 2, 7, -8, 2, 6, -7, 2, 6, -8, 2, 7, -8, 2, 6, -7, 2, 7, -7, 2, 6, -8, 2, 5, -7, 2, 5, -8, 2, 6, -8, 2, 5, -7, 2, 6, -7, 2, 5, -8, 2, 4, -7, 2, 4, -8, 2, 5, -8, 2, 4, -7, 2, 5, -6, 2, 6, -7, 2, 5, -6, 2, 5, -7, 2, 6, -7, 2, 5, -6, 2, 6, -7, 2, 4, -8, 2, 3, -7, 2, 3, -8, 2, 4, -8, 2, 3, -7, 2, 4, -7, 2, 3, -8, 2, 2, -7, 2, 2, -8, 2, 3, -8, 2, 2, -7, 2, 3, -7, 2, 2, -8, 2, 1, -7, 2, 1, -8, 2, 2, -8, 2, 1, -7, 2, 2, -7, 2, 1, -8, 2, 0, -7, 2, 0, -8, 2, 1, -8, 2, 0, -7, 2, 1, -6, 2, 4, -7, 2, 3, -6, 2, 3, -7, 2, 4, -7, 2, 3, -6, 2, 4, -6, 2, 5, -7, 2, 4, -6, 2, 4, -7, 2, 5, -7, 2, 4, -6, 2, 5, -6, 2, 3, -7, 2, 2, -6, 2, 2, -7, 2, 3, -7, 2, 2, -6, 2, 3, -6, 2, 2, -7, 2, 1, -6, 2, 1, -7, 2, 2, -7, 2, 1, -6, 2, 2, -6, 2, 1, -7, 2, 0, -6, 2, 0, -7, 2, 1, -7, 2, 0, -6, 2, 1, -6, 2, 0, -7, 2, -1, -6, 2, -1, -7, 2, 0, -7, 2, -1, -6, 2, 0, -6, 2, -1, -7, 2, -2, -6, 2, -2, -7, 2, -1, -7, 2, -2, -6, 2, -1, -6, 2, -2, -7, 2, -3, -6, 2, -3, -7, 2, -2, -7, 2, -3, -6, 2, -2, -6, 2, -3, -7, 2, -4, -6, 2, -4, -7, 2, -3, -7, 2, -4, -6, 2, -3, -6, 2, -4, -7, 2, -5, -6, 2, -5, -7, 2, -4, -7, 2, -5, -6, 2, -4, -7, 2, -4, -8, 2, -5, -7, 2, -5, -8, 2, -4, -8, 2, -5, -7, 2, -4, -7, 2, -5, -8, 2, -6, -7, 2, -6, -8, 2, -5, -8, 2, -6, -7, 2, -5, -7, 2, -1, -8, 2, -2, -7, 2, -2, -8, 2, -1, -8, 2, -2, -7, 2, -1, -7, 2, 0, -8, 2, -1, -7, 2, -1, -8, 2, 0, -8, 2, -1, -7, 2, 0, -7, 2, -2, -8, 2, -3, -7, 2, -3, -8, 2, -2, -8, 2, -3, -7, 2, -2, -6, 2, -5, -7, 2, -6, -6, 2, -6, -7, 2, -5, -7, 2, -6, -6, 2, -5, -7, 2, -3, -8, 2, -4, -7, 2, -4, -8, 2, -3, -8, 2, -4, -7, 2, -3, 7, 2, 12, 6, 2, 11, 7, 2, 11, 6, 2, 12, 6, 2, 11, 7, 2, 12, 7, 2, 11, 6, 2, 10, 7, 2, 10, 6, 2, 11, 6, 2, 10, 7, 2, 11, 7, 2, 10, 6, 2, 9, 7, 2, 9, 6, 2, 10, 6, 2, 9, 7, 2, 10, 7, 2, 9, 6, 2, 8, 7, 2, 8, 6, 2, 9, 6, 2, 8, 7, 2, 9, 7, 2, 8, 6, 2, 7, 7, 2, 7, 6, 2, 8, 6, 2, 7, 7, 2, 8, 7, 2, 7, 6, 2, 6, 7, 2, 6, 6, 2, 7, 6, 2, 6, 7, 2, 7, 7, 2, 6, 6, 2, 5, 7, 2, 5, 6, 2, 6, 6, 2, 5, 7, 2, 6, 7, 2, 5, 6, 2, 4, 7, 2, 4, 6, 2, 5, 6, 2, 4, 7, 2, 5, 7, 2, 4, 6, 2, 3, 7, 2, 3, 6, 2, 4, 6, 2, 3, 7, 2, 4, 7, 2, 3, 6, 2, 2, 7, 2, 2, 6, 2, 3, 6, 2, 2, 7, 2, 3, 7, 2, 2, 6, 2, 1, 7, 2, 1, 6, 2, 2, 6, 2, 1, 7, 2, 2, 7, 2, 1, 6, 2, 0, 7, 2, 0, 6, 2, 1, 6, 2, 0, 7, 2, 1, 7, 2, 0, 6, 2, -1, 7, 2, -1, 6, 2, 0, 6, 2, -1, 7, 2, 0, 7, 2, -1, 6, 2, -2, 7, 2, -2, 6, 2, -1, 6, 2, -2, 7, 2, -1, 7, 2, -2, 6, 2, -3, 7, 2, -3, 6, 2, -2, 6, 2, -3, 7, 2, -2, 7, 2, -3, 6, 2, -4, 7, 2, -4, 6, 2, -3, 6, 2, -4, 7, 2, -3, 7, 2, -4, 6, 2, -5, 7, 2, -5, 6, 2, -4, 6, 2, -5, 7, 2, -4, 7, 2, -5, 6, 2, -6, 7, 2, -6, 6, 2, -5, 6, 2, -6, 7, 2, -5, 8, 2, 15, 7, 2, 14, 8, 2, 14, 7, 2, 15, 7, 2, 14, 8, 2, 15, 8, 2, 12, 7, 2, 11, 8, 2, 11, 7, 2, 12, 7, 2, 11, 8, 2, 12, 8, 2, 9, 7, 2, 8, 8, 2, 8, 7, 2, 9, 7, 2, 8, 8, 2, 9, 8, 2, 14, 7, 2, 13, 8, 2, 13, 7, 2, 14, 7, 2, 13, 8, 2, 14, 8, 2, 13, 7, 2, 12, 8, 2, 12, 7, 2, 13, 7, 2, 12, 8, 2, 13, 8, 2, 11, 7, 2, 10, 8, 2, 10, 7, 2, 11, 7, 2, 10, 8, 2, 11, 8, 2, 6, 7, 2, 5, 8, 2, 5, 7, 2, 6, 7, 2, 5, 8, 2, 6, 8, 2, 7, 7, 2, 6, 8, 2, 6, 7, 2, 7, 7, 2, 6, 8, 2, 7, 8, 2, 8, 7, 2, 7, 8, 2, 7, 7, 2, 8, 7, 2, 7, 8, 2, 8, 8, 2, 10, 7, 2, 9, 8, 2, 9, 7, 2, 10, 7, 2, 9, 8, 2, 10, 8, 2, 5, 7, 2, 4, 8, 2, 4, 7, 2, 5, 7, 2, 4, 8, 2, 5, 8, 2, 4, 7, 2, 3, 8, 2, 3, 7, 2, 4, 7, 2, 3, 8, 2, 4, -7, 2, -6, -8, 1, -7, -7, 1, -7, -8, 2, -6, -8, 1, -7, -7, 2, -6, -6, 2, -6, -7, 1, -7, -6, 1, -7, -7, 2, -6, -7, 1, -7, -6, 2, -6, -5, 2, -6, -6, 1, -7, -5, 1, -7, -6, 2, -6, -6, 1, -7, -5, 2, -6, -4, 2, -6, -5, 1, -7, -4, 1, -7, -5, 2, -6, -5, 1, -7, -4, 2, -6, -3, 2, -6, -4, 1, -7, -3, 1, -7, -4, 2, -6, -4, 1, -7, -3, 2, -6, -2, 2, -6, -3, 1, -7, -2, 1, -7, -3, 2, -6, -3, 1, -7, -2, 2, -6, -1, 2, -6, -2, 1, -7, -1, 1, -7, -2, 2, -6, -2, 1, -7, -1, 2, -6, 0, 2, -6, -1, 1, -7, 0, 1, -7, -1, 2, -6, -1, 1, -7, 0, 2, -6, 1, 2, -6, 0, 1, -7, 1, 1, -7, 0, 2, -6, 0, 1, -7, 1, 2, -6, 2, 2, -6, 1, 1, -7, 2, 1, -7, 1, 2, -6, 1, 1, -7, 2, 2, -6, 3, 2, -6, 2, 1, -7, 3, 1, -7, 2, 2, -6, 2, 1, -7, 3, 2, -6, 4, 2, -6, 3, 1, -7, 4, 1, -7, 3, 2, -6, 3, 1, -7, 4, 2, -6, 5, 2, -6, 4, 1, -7, 5, 1, -7, 4, 2, -6, 4, 1, -7, 5, 2, -6, 6, 2, -6, 5, 1, -7, 6, 1, -7, 5, 2, -6, 5, 1, -7, 6, 2, -6, 7, 2, -6, 6, 1, -7, 7, 1, -7, 6, 2, -6, 6, 1, -7, 7, 2, -6, 7, 2, -6, 7, 1, -7, 8, 1, -7, 8, 1, -6, 7, 2, -6, 8, 1, -7, 8, 1, -5, 7, 2, -6, 8, 1, -6, 7, 2, -5, 7, 2, -6, 8, 1, -5, 8, 1, -4, 7, 2, -5, 8, 1, -5, 7, 2, -4, 7, 2, -5, 8, 1, -4, 8, 1, -3, 7, 2, -4, 8, 1, -4, 7, 2, -3, 7, 2, -4, 8, 1, -3, 8, 1, -2, 7, 2, -3, 8, 1, -3, 7, 2, -2, 7, 2, -3, 8, 1, -2, 8, 1, -1, 7, 2, -2, 8, 1, -2, 7, 2, -1, 7, 2, -2, 8, 1, -1, 8, 1, 0, 7, 2, -1, 8, 1, -1, 7, 2, 0, 7, 2, -1, 8, 1, 0, 8, 1, 1, 7, 2, 0, 8, 1, 0, 7, 2, 1, 7, 2, 0, 8, 1, 1, 8, 1, 2, 7, 2, 1, 8, 1, 1, 7, 2, 2, 7, 2, 1, 8, 1, 2, 7, 2, 3, 7, 2, 2, 8, 1, 2, 8, 2, 3, 7, 2, 3, 8, 1, 2, 8, 2, 3, 8, 1, 2, 9, 1, 2, 9, 1, 3, 8, 2, 3, 9, 1, 2, 9, 1, 4, 8, 2, 3, 9, 1, 3, 8, 2, 4, 8, 2, 3, 9, 1, 4, 9, 1, 5, 8, 2, 4, 9, 1, 4, 8, 2, 5, 8, 2, 4, 9, 1, 5, 9, 1, 6, 8, 2, 5, 9, 1, 5, 8, 2, 6, 8, 2, 5, 9, 1, 6, 9, 1, 7, 8, 2, 6, 9, 1, 6, 8, 2, 7, 8, 2, 6, 9, 1, 7, 9, 1, 8, 8, 2, 7, 9, 1, 7, 8, 2, 8, 8, 2, 7, 9, 1, 8, 9, 1, 9, 8, 2, 8, 9, 1, 8, 8, 2, 9, 8, 2, 8, 9, 1, 9, 9, 1, 10, 8, 2, 9, 9, 1, 9, 8, 2, 10, 8, 2, 9, 9, 1, 10, 9, 1, 11, 8, 2, 10, 9, 1, 10, 8, 2, 11, 8, 2, 10, 9, 1, 11, 9, 1, 14, 8, 2, 13, 9, 1, 13, 8, 2, 14, 8, 2, 13, 9, 1, 14, 9, 1, 15, 8, 2, 14, 9, 1, 14, 8, 2, 15, 8, 2, 14, 9, 1, 15, 9, 1, 16, 8, 2, 15, 9, 1, 15, 8, 2, 16, 8, 2, 15, 9, 1, 16, 9, 1, 17, 8, 2, 16, 9, 1, 16, 8, 2, 17, 8, 2, 16, 9, 1, 17, 9, 1, 18, 8, 2, 17, 9, 1, 17, 8, 2, 18, 8, 2, 17, 9, 1, 18, 9, 1, 19, 8, 2, 18, 9, 1, 18, 8, 2, 19, 8, 2, 18, 9, 1, 19, 9, 1, 20, 8, 2, 19, 9, 1, 19, 8, 2, 20, 8, 2, 19, 9, 1, 20, 8, 2, 21, 8, 2, 20, 9, 1, 20, 9, 2, 21, 8, 2, 21, 9, 1, 20, 9, 1, 13, 8, 2, 12, 9, 1, 12, 8, 2, 13, 8, 2, 12, 9, 1, 13, 9, 1, 12, 8, 2, 11, 9, 1, 11, 8, 2, 12, 8, 2, 11, 9, 1, 12, 10, 2, 21, 9, 1, 20, 10, 1, 20, 9, 2, 21, 9, 1, 20, 10, 2, 21, 11, 2, 21, 10, 1, 20, 11, 1, 20, 10, 2, 21, 10, 1, 20, 11, 2, 21, 12, 2, 21, 11, 1, 20, 12, 1, 20, 11, 2, 21, 11, 1, 20, 12, 2, 21, 13, 2, 21, 12, 1, 20, 13, 1, 20, 12, 2, 21, 12, 1, 20, 13, 2, 21, 14, 2, 21, 13, 1, 20, 14, 1, 20, 13, 2, 21, 13, 1, 20, 14, 2, 21, 14, 2, 21, 14, 1, 20, 15, 1, 20, 15, 1, 21, 14, 2, 21, 15, 1, 20, 15, 1, 22, 14, 2, 21, 15, 1, 21, 14, 2, 22, 14, 2, 21, 15, 1, 22, 14, 2, 23, 14, 2, 22, 15, 1, 22, 15, 2, 23, 14, 2, 23, 15, 1, 22, 16, 1, 24, 15, 2, 23, 16, 1, 23, 15, 2, 24, 15, 2, 23, 16, 1, 24, 15, 2, 23, 15, 1, 22, 16, 1, 22, 16, 1, 23, 15, 2, 23, 16, 1, 22, 16, 1, 26, 15, 2, 25, 16, 1, 25, 15, 2, 26, 15, 2, 25, 16, 1, 26, 16, 1, 27, 15, 2, 26, 16, 1, 26, 15, 2, 27, 15, 2, 26, 16, 1, 27, 16, 1, 28, 15, 2, 27, 16, 1, 27, 15, 2, 28, 15, 2, 27, 16, 1, 28, 15, 2, 29, 15, 2, 28, 16, 1, 28, 16, 2, 29, 15, 2, 29, 16, 1, 28, 16, 1, 25, 15, 2, 24, 16, 1, 24, 15, 2, 25, 15, 2, 24, 16, 1, 25, 17, 2, 30, 18, 1, 30, 18, 2, 30, 17, 1, 30, 18, 1, 30, 17, 2, 30, 16, 2, 29, 16, 1, 28, 17, 1, 28, 17, 1, 29, 16, 2, 29, 17, 1, 28, 17, 1, 33, 16, 2, 32, 17, 1, 32, 16, 2, 33, 16, 2, 32, 17, 1, 33, 17, 1, 34, 16, 2, 33, 17, 1, 33, 16, 2, 34, 16, 2, 33, 17, 1, 34, 17, 1, 35, 16, 2, 34, 17, 1, 34, 16, 2, 35, 16, 2, 34, 17, 1, 35, 17, 1, 36, 16, 2, 35, 17, 1, 35, 16, 2, 36, 16, 2, 35, 17, 1, 36, 17, 1, 37, 16, 2, 36, 17, 1, 36, 16, 2, 37, 16, 2, 36, 17, 1, 37, 17, 1, 38, 16, 2, 37, 17, 1, 37, 16, 2, 38, 16, 2, 37, 17, 1, 38, 17, 1, 39, 16, 2, 38, 17, 1, 38, 16, 1, 39, 16, 2, 38, 17, 1, 39, 16, 1, 39, 15, 2, 38, 16, 2, 38, 15, 1, 39, 15, 2, 38, 16, 1, 39, 15, 1, 39, 14, 2, 38, 15, 2, 38, 14, 1, 39, 14, 2, 38, 15, 1, 39, 14, 1, 39, 13, 2, 38, 14, 2, 38, 13, 1, 39, 13, 2, 38, 14, 1, 39, 13, 1, 39, 12, 2, 38, 13, 2, 38, 12, 1, 39, 12, 2, 38, 13, 1, 39, 12, 1, 39, 11, 2, 38, 12, 2, 38, 11, 1, 39, 11, 2, 38, 12, 1, 39, 11, 1, 39, 10, 2, 38, 11, 2, 38, 10, 1, 39, 10, 2, 38, 11, 1, 39, 10, 1, 39, 9, 2, 38, 10, 2, 38, 9, 1, 39, 9, 2, 38, 10, 1, 39, 9, 1, 39, 8, 2, 38, 9, 2, 38, 8, 1, 39, 8, 2, 38, 9, 1, 39, 7, 1, 39, 7, 1, 38, 8, 2, 38, 8, 1, 39, 7, 1, 39, 8, 2, 38, 7, 1, 38, 7, 2, 37, 8, 2, 37, 8, 2, 38, 7, 1, 38, 8, 2, 37, 7, 1, 38, 6, 2, 37, 7, 2, 37, 6, 1, 38, 6, 2, 37, 7, 1, 38, 5, 1, 38, 5, 1, 37, 6, 2, 37, 6, 1, 38, 5, 1, 38, 6, 2, 37, 5, 1, 37, 5, 2, 36, 6, 2, 36, 6, 2, 37, 5, 1, 37, 6, 2, 36, 5, 1, 37, 4, 2, 36, 5, 2, 36, 4, 1, 37, 4, 2, 36, 5, 1, 37, 4, 1, 37, 3, 2, 36, 4, 2, 36, 3, 1, 37, 3, 2, 36, 4, 1, 37, 3, 1, 37, 2, 2, 36, 3, 2, 36, 2, 1, 37, 2, 2, 36, 3, 1, 37, 1, 1, 37, 1, 1, 36, 2, 2, 36, 2, 1, 37, 1, 1, 37, 2, 2, 36, 2, 2, 36, 1, 1, 35, 2, 2, 35, 1, 1, 36, 1, 1, 35, 2, 2, 36, 2, 2, 35, 1, 1, 34, 2, 2, 34, 1, 1, 35, 1, 1, 34, 2, 2, 35, 1, 1, 34, 1, 2, 33, 2, 2, 33, 2, 2, 34, 1, 1, 34, 2, 2, 33, 1, 1, 34, 0, 2, 33, 1, 2, 33, 0, 1, 34, 0, 2, 33, 1, 1, 34, 0, 1, 34, -1, 2, 33, 0, 2, 33, -1, 1, 34, -1, 2, 33, 0, 1, 34, -2, 1, 34, -3, 2, 33, -2, 2, 33, -3, 1, 34, -3, 2, 33, -2, 1, 34, -4, 1, 34, -4, 1, 33, -3, 2, 33, -3, 1, 34, -4, 1, 34, -3, 2, 33, -1, 1, 34, -2, 2, 33, -1, 2, 33, -2, 1, 34, -2, 2, 33, -1, 1, 34, -4, 1, 33, -4, 2, 32, -3, 2, 32, -3, 2, 33, -4, 1, 33, -3, 2, 32, -4, 1, 33, -5, 2, 32, -4, 2, 32, -5, 1, 33, -5, 2, 32, -4, 1, 33, -6, 1, 33, -6, 1, 32, -5, 2, 32, -5, 1, 33, -6, 1, 33, -5, 2, 32, -5, 2, 32, -6, 1, 31, -5, 2, 31, -6, 1, 32, -6, 1, 31, -5, 2, 32, -6, 1, 31, -6, 2, 30, -5, 2, 30, -5, 2, 31, -6, 1, 31, -5, 2, 30, -6, 1, 31, -7, 2, 30, -6, 2, 30, -7, 1, 31, -7, 2, 30, -6, 1, 31, -8, 1, 31, -8, 1, 30, -7, 2, 30, -7, 1, 31, -8, 1, 31, -7, 2, 30, -8, 1, 30, -8, 2, 29, -7, 2, 29, -7, 2, 30, -8, 1, 30, -7, 2, 29, -8, 1, 30, -9, 2, 29, -8, 2, 29, -9, 1, 30, -9, 2, 29, -8, 1, 30, -10, 1, 30, -10, 1, 29, -9, 2, 29, -9, 1, 30, -10, 1, 30, -9, 2, 29, -9, 2, 29, -10, 1, 28, -9, 2, 28, -10, 1, 29, -10, 1, 28, -9, 2, 29, -9, 2, 28, -10, 1, 27, -9, 2, 27, -10, 1, 28, -10, 1, 27, -9, 2, 28, -9, 2, 27, -10, 1, 26, -9, 2, 26, -10, 1, 27, -10, 1, 26, -9, 2, 27, -9, 2, 26, -10, 1, 25, -9, 2, 25, -10, 1, 26, -10, 1, 25, -9, 2, 26, -9, 2, 24, -10, 1, 23, -9, 2, 23, -10, 1, 24, -10, 1, 23, -9, 2, 24, -9, 2, 23, -10, 1, 22, -9, 2, 22, -10, 1, 23, -10, 1, 22, -9, 2, 23, -9, 2, 21, -10, 1, 20, -9, 2, 20, -10, 1, 21, -10, 1, 20, -9, 2, 21, -9, 2, 20, -10, 1, 19, -9, 2, 19, -10, 1, 20, -10, 1, 19, -9, 2, 20, -9, 2, 19, -10, 1, 18, -9, 2, 18, -10, 1, 19, -10, 1, 18, -9, 2, 19, -9, 2, 25, -10, 1, 24, -9, 2, 24, -10, 1, 25, -10, 1, 24, -9, 2, 25, -9, 2, 22, -10, 1, 21, -9, 2, 21, -10, 1, 22, -10, 1, 21, -9, 2, 22, -9, 2, 18, -10, 1, 17, -9, 2, 17, -10, 1, 18, -10, 1, 17, -9, 2, 18, -9, 2, 17, -10, 1, 16, -9, 1, 16, -10, 1, 17, -10, 1, 16, -9, 2, 17, -8, 2, 17, -9, 1, 16, -8, 2, 16, -9, 2, 17, -9, 1, 16, -8, 2, 17, -8, 2, 16, -9, 1, 15, -8, 2, 15, -9, 1, 16, -9, 1, 15, -8, 2, 16, -8, 2, 14, -9, 1, 13, -8, 2, 13, -9, 1, 14, -9, 1, 13, -8, 2, 14, -8, 2, 13, -9, 1, 12, -8, 2, 12, -9, 1, 13, -9, 1, 12, -8, 2, 13, -8, 2, 12, -9, 1, 11, -8, 2, 11, -9, 1, 12, -9, 1, 11, -8, 2, 12, -8, 2, 11, -9, 1, 10, -8, 2, 10, -9, 1, 11, -9, 1, 10, -8, 2, 11, -8, 2, 15, -9, 1, 14, -8, 2, 14, -9, 1, 15, -9, 1, 14, -8, 2, 15, -8, 2, 9, -9, 1, 8, -8, 2, 8, -9, 1, 9, -9, 1, 8, -8, 2, 9, -8, 2, 8, -9, 1, 7, -8, 2, 7, -9, 1, 8, -9, 1, 7, -8, 2, 8, -8, 2, 7, -9, 1, 6, -8, 2, 6, -9, 1, 7, -9, 1, 6, -8, 2, 7, -8, 2, 10, -9, 1, 9, -8, 2, 9, -9, 1, 10, -9, 1, 9, -8, 2, 10, -8, 2, 6, -9, 1, 5, -8, 2, 5, -9, 1, 6, -9, 1, 5, -8, 2, 6, -8, 2, 5, -9, 1, 4, -8, 2, 4, -9, 1, 5, -9, 1, 4, -8, 2, 5, -8, 2, 4, -9, 1, 3, -8, 2, 3, -9, 1, 4, -9, 1, 3, -8, 2, 4, -8, 2, 3, -9, 1, 2, -8, 2, 2, -9, 1, 3, -9, 1, 2, -8, 2, 3, -8, 2, 2, -9, 1, 1, -8, 2, 1, -9, 1, 2, -9, 1, 1, -8, 2, 2, -8, 2, 1, -9, 1, 0, -8, 2, 0, -9, 1, 1, -9, 1, 0, -8, 2, 1, -8, 2, 0, -9, 1, -1, -8, 2, -1, -9, 1, 0, -9, 1, -1, -8, 2, 0, -8, 2, -2, -9, 1, -3, -8, 2, -3, -9, 1, -2, -9, 1, -3, -8, 2, -2, -8, 2, -3, -9, 1, -4, -8, 2, -4, -9, 1, -3, -9, 1, -4, -8, 2, -3, -8, 2, -4, -9, 1, -5, -8, 2, -5, -9, 1, -4, -9, 1, -5, -8, 2, -4, -8, 2, -5, -9, 1, -6, -8, 2, -6, -9, 1, -5, -9, 1, -6, -8, 2, -5, -8, 2, -6, -9, 1, -7, -8, 1, -7, -9, 1, -6, -9, 1, -7, -8, 2, -6, 18, 3, 32, 17, 2, 32, 17, 3, 32, 18, 2, 32, 17, 2, 32, 18, 3, 32, 18, 2, 32, 17, 1, 32, 17, 2, 32, 18, 1, 32, 17, 1, 32, 18, 2, 32, 17, 2, 32, 16, 1, 32, 16, 2, 32, 17, 1, 32, 16, 1, 32, 17, 2, 32, 20, 2, 29, 19, 1, 29, 19, 2, 29, 20, 1, 29, 19, 1, 29, 20, 2, 29, 21, 2, 29, 20, 1, 29, 20, 2, 29, 21, 1, 29, 20, 1, 29, 21, 2, 29, 21, 3, 25, 20, 2, 25, 20, 3, 25, 21, 2, 25, 20, 2, 25, 21, 3, 25, 21, 2, 25, 20, 1, 25, 20, 2, 25, 21, 1, 25, 20, 1, 25, 21, 2, 25, 20, 2, 20, 19, 1, 20, 19, 2, 20, 20, 1, 20, 19, 1, 20, 20, 2, 20, 21, 2, 20, 20, 1, 20, 20, 2, 20, 21, 1, 20, 20, 1, 20, 21, 2, 20, 22, 2, 20, 21, 1, 20, 21, 2, 20, 22, 1, 20, 21, 1, 20, 22, 2, 20, 18, 2, 31, 18, 1, 32, 18, 2, 32, 18, 1, 31, 18, 1, 32, 18, 2, 31, 18, 2, 30, 18, 1, 31, 18, 2, 31, 18, 1, 30, 18, 1, 31, 18, 2, 30, 21, 2, 28, 21, 1, 29, 21, 2, 29, 21, 1, 28, 21, 1, 29, 21, 2, 28, 21, 2, 27, 21, 1, 28, 21, 2, 28, 21, 1, 27, 21, 1, 28, 21, 2, 27, 21, 2, 24, 21, 1, 25, 21, 2, 25, 21, 1, 24, 21, 1, 25, 21, 2, 24, 21, 2, 23, 21, 1, 24, 21, 2, 24, 21, 1, 23, 21, 1, 24, 21, 2, 23, 22, 2, 19, 22, 1, 20, 22, 2, 20, 22, 1, 19, 22, 1, 20, 22, 2, 19, 22, 2, 18, 22, 1, 19, 22, 2, 19, 22, 1, 18, 22, 1, 19, 22, 2, 18, 22, 2, 17, 22, 1, 18, 22, 2, 18, 22, 1, 17, 22, 1, 18, 22, 2, 17, 21, 2, 17, 22, 1, 17, 22, 2, 17, 21, 1, 17, 22, 1, 17, 21, 2, 17, 20, 2, 17, 21, 1, 17, 21, 2, 17, 20, 1, 17, 21, 1, 17, 20, 2, 17, 19, 2, 17, 20, 1, 17, 20, 2, 17, 19, 1, 17, 20, 1, 17, 19, 2, 17, 20, 2, 23, 21, 1, 23, 21, 2, 23, 20, 1, 23, 21, 1, 23, 20, 2, 23, 20, 3, 27, 21, 2, 27, 21, 3, 27, 20, 2, 27, 21, 2, 27, 20, 3, 27, 20, 2, 27, 21, 1, 27, 21, 2, 27, 20, 1, 27, 21, 1, 27, 20, 2, 27, 19, 2, 27, 20, 1, 27, 20, 2, 27, 19, 1, 27, 20, 1, 27, 19, 2, 27, 16, 2, 30, 17, 1, 29, 17, 1, 30, 16, 2, 29, 17, 1, 29, 16, 2, 30, 16, 2, 30, 17, 1, 30, 17, 2, 30, 16, 1, 30, 17, 1, 30, 16, 2, 30, 19, 2, 18, 19, 1, 17, 19, 2, 17, 19, 1, 18, 19, 1, 17, 19, 2, 18, 19, 2, 19, 19, 1, 18, 19, 2, 18, 19, 1, 19, 19, 1, 18, 19, 2, 19, 19, 2, 20, 19, 1, 19, 19, 2, 19, 19, 1, 20, 19, 1, 19, 19, 2, 20, 19, 2, 24, 19, 1, 23, 19, 2, 23, 19, 1, 24, 19, 1, 23, 19, 2, 24, 19, 2, 25, 19, 1, 24, 19, 2, 24, 19, 1, 25, 19, 1, 24, 19, 2, 25, 19, 2, 28, 19, 1, 27, 19, 2, 27, 19, 1, 28, 19, 1, 27, 19, 2, 28, 19, 2, 29, 19, 1, 28, 19, 2, 28, 19, 1, 29, 19, 1, 28, 19, 2, 29, 18, 1, 35, 17, 1, 34, 18, 1, 34, 17, 1, 35, 17, 1, 34, 18, 1, 35, 19, 1, 35, 18, 1, 34, 19, 1, 34, 18, 1, 35, 18, 1, 34, 19, 1, 35, 20, 1, 35, 19, 1, 34, 20, 1, 34, 19, 1, 35, 19, 1, 34, 20, 1, 35, 19, 1, 23, 18, 1, 22, 19, 1, 22, 18, 1, 23, 18, 1, 22, 19, 1, 23, 18, 1, 23, 17, 1, 22, 18, 1, 22, 17, 1, 23, 17, 1, 22, 18, 1, 23, 17, 1, 23, 16, 1, 22, 17, 1, 22, 16, 1, 23, 16, 1, 22, 17, 1, 23, 17, 1, 24, 16, 1, 23, 17, 1, 23, 16, 1, 24, 16, 1, 23, 17, 1, 24, 17, 1, 26, 16, 1, 25, 17, 1, 25, 16, 1, 26, 16, 1, 25, 17, 1, 26, 18, 1, 27, 17, 1, 26, 18, 1, 26, 17, 1, 27, 17, 1, 26, 18, 1, 27, 18, 1, 28, 17, 1, 27, 18, 1, 27, 17, 1, 28, 17, 1, 27, 18, 1, 28, 19, 1, 28, 18, 1, 27, 19, 1, 27, 18, 1, 28, 18, 1, 27, 19, 1, 28, 18, 1, 29, 17, 1, 28, 18, 1, 28, 17, 1, 29, 17, 1, 28, 18, 1, 29, 17, 1, 28, 16, 1, 27, 17, 1, 27, 16, 1, 28, 16, 1, 27, 17, 1, 28, 17, 1, 27, 16, 1, 26, 17, 1, 26, 16, 1, 27, 16, 1, 26, 17, 1, 27, 17, 1, 25, 16, 1, 24, 17, 1, 24, 16, 1, 25, 16, 1, 24, 17, 1, 25, 18, 1, 25, 17, 1, 24, 18, 1, 24, 17, 1, 25, 17, 1, 24, 18, 1, 25, 19, 1, 25, 18, 1, 24, 19, 1, 24, 18, 1, 25, 18, 1, 24, 19, 1, 25, 19, 1, 26, 18, 1, 25, 19, 1, 25, 18, 1, 26, 18, 1, 25, 19, 1, 26, 19, 1, 27, 18, 1, 26, 19, 1, 26, 18, 1, 27, 18, 1, 26, 19, 1, 27, 18, 1, 26, 17, 1, 25, 18, 1, 25, 17, 1, 26, 17, 1, 25, 18, 1, 26, 18, 1, 24, 17, 1, 23, 18, 1, 23, 17, 1, 24, 17, 1, 23, 18, 1, 24, 19, 1, 24, 18, 1, 23, 19, 1, 23, 18, 1, 24, 18, 1, 23, 19, 1, 24, 19, 1, 29, 18, 1, 28, 19, 1, 28, 18, 1, 29, 18, 1, 28, 19, 1, 29, 18, 1, 30, 17, 1, 29, 18, 1, 29, 17, 1, 30, 17, 1, 29, 18, 1, 30, 19, 1, 30, 18, 1, 29, 19, 1, 29, 18, 1, 30, 18, 1, 29, 19, 1, 30, 20, 1, 31, 19, 1, 30, 20, 1, 30, 19, 1, 31, 19, 1, 30, 20, 1, 31, 20, 1, 32, 19, 1, 31, 20, 1, 31, 19, 1, 32, 19, 1, 31, 20, 1, 32, 20, 1, 33, 19, 1, 32, 20, 1, 32, 19, 1, 33, 19, 1, 32, 20, 1, 33, 19, 1, 34, 18, 1, 33, 19, 1, 33, 18, 1, 34, 18, 1, 33, 19, 1, 34, 19, 1, 33, 18, 1, 32, 19, 1, 32, 18, 1, 33, 18, 1, 32, 19, 1, 33, 18, 1, 33, 17, 1, 32, 18, 1, 32, 17, 1, 33, 17, 1, 32, 18, 1, 33, 18, 1, 34, 17, 1, 33, 18, 1, 33, 17, 1, 34, 17, 1, 33, 18, 1, 34, 20, 1, 34, 19, 1, 33, 20, 1, 33, 19, 1, 34, 19, 1, 33, 20, 1, 34, 19, 1, 32, 18, 1, 31, 19, 1, 31, 18, 1, 32, 18, 1, 31, 19, 1, 32, 19, 1, 31, 18, 1, 30, 19, 1, 30, 18, 1, 31, 18, 1, 30, 19, 1, 31, 20, 1, 30, 19, 1, 29, 20, 1, 29, 19, 1, 30, 19, 1, 29, 20, 1, 30, 21, 1, 30, 20, 1, 29, 21, 1, 29, 20, 1, 30, 20, 1, 29, 21, 1, 30, 22, 1, 30, 21, 1, 29, 22, 1, 29, 21, 1, 30, 21, 1, 29, 22, 1, 30, 22, 1, 31, 21, 1, 30, 22, 1, 30, 21, 1, 31, 21, 1, 30, 22, 1, 31, 21, 1, 32, 20, 1, 31, 21, 1, 31, 20, 1, 32, 20, 1, 31, 21, 1, 32, 21, 1, 33, 20, 1, 32, 21, 1, 32, 20, 1, 33, 20, 1, 32, 21, 1, 33, 21, 1, 34, 20, 1, 33, 21, 1, 33, 20, 1, 34, 20, 1, 33, 21, 1, 34, 22, 1, 33, 21, 1, 32, 22, 1, 32, 21, 1, 33, 21, 1, 32, 22, 1, 33, 22, 1, 32, 21, 1, 31, 22, 1, 31, 21, 1, 32, 21, 1, 31, 22, 1, 32, 21, 1, 31, 20, 1, 30, 21, 1, 30, 20, 1, 31, 20, 1, 30, 21, 1, 31, 22, 1, 34, 21, 1, 33, 22, 1, 33, 21, 1, 34, 21, 1, 33, 22, 1, 34, 23, 1, 32, 22, 1, 31, 23, 1, 31, 22, 1, 32, 22, 1, 31, 23, 1, 32, 23, 1, 31, 22, 1, 30, 23, 1, 30, 22, 1, 31, 22, 1, 30, 23, 1, 31, 23, 1, 30, 22, 1, 29, 23, 1, 29, 22, 1, 30, 22, 1, 29, 23, 1, 30, 22, 1, 29, 21, 1, 28, 22, 1, 28, 21, 1, 29, 21, 1, 28, 22, 1, 29, 22, 1, 28, 21, 1, 27, 22, 1, 27, 21, 1, 28, 21, 1, 27, 22, 1, 28, 22, 1, 27, 21, 1, 26, 22, 1, 26, 21, 1, 27, 21, 1, 26, 22, 1, 27, 21, 1, 27, 20, 1, 26, 21, 1, 26, 20, 1, 27, 20, 1, 26, 21, 1, 27, 20, 1, 27, 19, 1, 26, 20, 1, 26, 19, 1, 27, 19, 1, 26, 20, 1, 27, 20, 1, 26, 19, 1, 25, 20, 1, 25, 19, 1, 26, 19, 1, 25, 20, 1, 26, 21, 1, 26, 20, 1, 25, 21, 1, 25, 20, 1, 26, 20, 1, 25, 21, 1, 26, 22, 1, 26, 21, 1, 25, 22, 1, 25, 21, 1, 26, 21, 1, 25, 22, 1, 26, 23, 1, 26, 22, 1, 25, 23, 1, 25, 22, 1, 26, 22, 1, 25, 23, 1, 26, 23, 1, 27, 22, 1, 26, 23, 1, 26, 22, 1, 27, 22, 1, 26, 23, 1, 27, 24, 1, 27, 23, 1, 26, 24, 1, 26, 23, 1, 27, 23, 1, 26, 24, 1, 27, 23, 1, 28, 22, 1, 27, 23, 1, 27, 22, 1, 28, 22, 1, 27, 23, 1, 28, 24, 1, 30, 23, 1, 29, 24, 1, 29, 23, 1, 30, 23, 1, 29, 24, 1, 30, 24, 1, 29, 23, 1, 28, 24, 1, 28, 23, 1, 29, 23, 1, 28, 24, 1, 29, 23, 1, 29, 22, 1, 28, 23, 1, 28, 22, 1, 29, 22, 1, 28, 23, 1, 29, 24, 1, 28, 23, 1, 27, 24, 1, 27, 23, 1, 28, 23, 1, 27, 24, 1, 28, 24, 1, 26, 23, 1, 25, 24, 1, 25, 23, 1, 26, 23, 1, 25, 24, 1, 26, 24, 1, 25, 23, 1, 24, 24, 1, 24, 23, 1, 25, 23, 1, 24, 24, 1, 25, 23, 1, 25, 22, 1, 24, 23, 1, 24, 22, 1, 25, 22, 1, 24, 23, 1, 25, 23, 1, 24, 22, 1, 23, 23, 1, 23, 22, 1, 24, 22, 1, 23, 23, 1, 24, 22, 1, 25, 21, 1, 24, 22, 1, 24, 21, 1, 25, 21, 1, 24, 22, 1, 25, 22, 1, 24, 21, 1, 23, 22, 1, 23, 21, 1, 24, 21, 1, 23, 22, 1, 24, 22, 1, 23, 21, 1, 22, 22, 1, 22, 21, 1, 23, 21, 1, 22, 22, 1, 23, 23, 1, 23, 22, 1, 22, 23, 1, 22, 22, 1, 23, 22, 1, 22, 23, 1, 23, 13, 1, 8, 12, 1, 7, 13, 1, 7, 12, 1, 8, 12, 1, 7, 13, 1, 8, 20, 1, 23, 19, 1, 22, 20, 1, 22, 19, 1, 23, 19, 1, 22, 20, 1, 23, 24, 1, 23, 23, 1, 22, 24, 1, 22, 23, 1, 23, 23, 1, 22, 24, 1, 23, 24, 1, 24, 23, 1, 23, 24, 1, 23, 23, 1, 24, 23, 1, 23, 24, 1, 24, 24, 1, 31, 23, 1, 30, 24, 1, 30, 23, 1, 31, 23, 1, 30, 24, 1, 31, 24, 1, 32, 23, 1, 31, 24, 1, 31, 23, 1, 32, 23, 1, 31, 24, 1, 32, 23, 1, 33, 22, 1, 32, 23, 1, 32, 22, 1, 33, 22, 1, 32, 23, 1, 33, 23, 1, 34, 22, 1, 33, 23, 1, 33, 22, 1, 34, 22, 1, 33, 23, 1, 34, 24, 1, 33, 23, 1, 32, 24, 1, 32, 23, 1, 33, 23, 1, 32, 24, 1, 33, 19, 1, 39, 18, 1, 38, 19, 1, 38, 18, 1, 39, 18, 1, 38, 19, 1, 39, 23, 1, 35, 22, 1, 34, 23, 1, 34, 22, 1, 35, 22, 1, 34, 23, 1, 35, 22, 1, 35, 21, 1, 34, 22, 1, 34, 21, 1, 35, 21, 1, 34, 22, 1, 35, 21, 1, 35, 20, 1, 34, 21, 1, 34, 20, 1, 35, 20, 1, 34, 21, 1, 35, 20, 1, 36, 19, 1, 35, 20, 1, 35, 19, 1, 36, 19, 1, 35, 20, 1, 36, 21, 1, 36, 20, 1, 35, 21, 1, 35, 20, 1, 36, 20, 1, 35, 21, 1, 36, 22, 1, 36, 21, 1, 35, 22, 1, 35, 21, 1, 36, 21, 1, 35, 22, 1, 36, 21, 1, 39, 20, 1, 38, 21, 1, 38, 20, 1, 39, 20, 1, 38, 21, 1, 39, 19, 1, 36, 18, 1, 35, 19, 1, 35, 18, 1, 36, 18, 1, 35, 19, 1, 36, 18, 1, 36, 17, 1, 35, 18, 1, 35, 17, 1, 36, 17, 1, 35, 18, 1, 36, 18, 1, 37, 17, 1, 36, 18, 1, 36, 17, 1, 37, 17, 1, 36, 18, 1, 37, 19, 1, 37, 18, 1, 36, 19, 1, 36, 18, 1, 37, 18, 1, 36, 19, 1, 37, 20, 1, 37, 19, 1, 36, 20, 1, 36, 19, 1, 37, 19, 1, 36, 20, 1, 37, 21, 1, 37, 20, 1, 36, 21, 1, 36, 20, 1, 37, 20, 1, 36, 21, 1, 37, 21, 1, 38, 20, 1, 37, 21, 1, 37, 20, 1, 38, 20, 1, 37, 21, 1, 38, 20, 1, 38, 19, 1, 37, 20, 1, 37, 19, 1, 38, 19, 1, 37, 20, 1, 38, 19, 1, 38, 18, 1, 37, 19, 1, 37, 18, 1, 38, 18, 1, 37, 19, 1, 38, 18, 1, 38, 17, 1, 37, 18, 1, 37, 17, 1, 38, 17, 1, 37, 18, 1, 38, 20, 1, 39, 19, 1, 38, 20, 1, 38, 19, 1, 39, 19, 1, 38, 20, 1, 39, 18, 1, 39, 17, 1, 38, 18, 1, 38, 17, 1, 39, 17, 1, 38, 18, 1, 39, 22, 1, 37, 21, 1, 36, 22, 1, 36, 21, 1, 37, 21, 1, 36, 22, 1, 37, 20, 1, 40, 19, 1, 39, 20, 1, 39, 19, 1, 40, 19, 1, 39, 20, 1, 40, 19, 1, 40, 18, 1, 39, 19, 1, 39, 18, 1, 40, 18, 1, 39, 19, 1, 40, 18, 1, 40, 17, 1, 39, 18, 1, 39, 17, 1, 40, 17, 1, 39, 18, 1, 40, 17, 1, 40, 16, 1, 39, 17, 1, 39, 16, 1, 40, 16, 1, 39, 17, 1, 40, 16, 1, 40, 15, 1, 39, 16, 1, 39, 15, 1, 40, 15, 1, 39, 16, 1, 40, 15, 1, 40, 14, 1, 39, 15, 1, 39, 14, 1, 40, 14, 1, 39, 15, 1, 40, 14, 1, 40, 13, 1, 39, 14, 1, 39, 13, 1, 40, 13, 1, 39, 14, 1, 40, 13, 1, 40, 12, 1, 39, 13, 1, 39, 12, 1, 40, 12, 1, 39, 13, 1, 40, 12, 1, 40, 11, 1, 39, 12, 1, 39, 11, 1, 40, 11, 1, 39, 12, 1, 40, 11, 1, 40, 10, 1, 39, 11, 1, 39, 10, 1, 40, 10, 1, 39, 11, 1, 40, 10, 1, 40, 9, 1, 39, 10, 1, 39, 9, 1, 40, 9, 1, 39, 10, 1, 40, 9, 1, 40, 8, 1, 39, 9, 1, 39, 8, 1, 40, 8, 1, 39, 9, 1, 40, 8, 1, 40, 7, 1, 39, 8, 1, 39, 7, 1, 40, 7, 1, 39, 8, 1, 40, 8, 1, 41, 7, 1, 40, 8, 1, 40, 7, 1, 41, 7, 1, 40, 8, 1, 41, 9, 1, 41, 8, 1, 40, 9, 1, 40, 8, 1, 41, 8, 1, 40, 9, 1, 41, 10, 1, 41, 9, 1, 40, 10, 1, 40, 9, 1, 41, 9, 1, 40, 10, 1, 41, 11, 1, 41, 10, 1, 40, 11, 1, 40, 10, 1, 41, 10, 1, 40, 11, 1, 41, 12, 1, 41, 11, 1, 40, 12, 1, 40, 11, 1, 41, 11, 1, 40, 12, 1, 41, 13, 1, 41, 12, 1, 40, 13, 1, 40, 12, 1, 41, 12, 1, 40, 13, 1, 41, 14, 1, 41, 13, 1, 40, 14, 1, 40, 13, 1, 41, 13, 1, 40, 14, 1, 41, 15, 1, 41, 14, 1, 40, 15, 1, 40, 14, 1, 41, 14, 1, 40, 15, 1, 41, 16, 1, 41, 15, 1, 40, 16, 1, 40, 15, 1, 41, 15, 1, 40, 16, 1, 41, 17, 1, 41, 16, 1, 40, 17, 1, 40, 16, 1, 41, 16, 1, 40, 17, 1, 41, 18, 1, 41, 17, 1, 40, 18, 1, 40, 17, 1, 41, 17, 1, 40, 18, 1, 41, 19, 1, 41, 18, 1, 40, 19, 1, 40, 18, 1, 41, 18, 1, 40, 19, 1, 41, 20, 1, 41, 19, 1, 40, 20, 1, 40, 19, 1, 41, 19, 1, 40, 20, 1, 41, 17, 1, 43, 16, 1, 42, 17, 1, 42, 16, 1, 43, 16, 1, 42, 17, 1, 43, 17, 1, 42, 16, 1, 41, 17, 1, 41, 16, 1, 42, 16, 1, 41, 17, 1, 42, 16, 1, 42, 15, 1, 41, 16, 1, 41, 15, 1, 42, 15, 1, 41, 16, 1, 42, 14, 1, 42, 13, 1, 41, 14, 1, 41, 13, 1, 42, 13, 1, 41, 14, 1, 42, 13, 1, 42, 12, 1, 41, 13, 1, 41, 12, 1, 42, 12, 1, 41, 13, 1, 42, 12, 1, 42, 11, 1, 41, 12, 1, 41, 11, 1, 42, 11, 1, 41, 12, 1, 42, 11, 1, 42, 10, 1, 41, 11, 1, 41, 10, 1, 42, 10, 1, 41, 11, 1, 42, 10, 1, 42, 9, 1, 41, 10, 1, 41, 9, 1, 42, 9, 1, 41, 10, 1, 42, 9, 1, 42, 8, 1, 41, 9, 1, 41, 8, 1, 42, 8, 1, 41, 9, 1, 42, 8, 1, 42, 7, 1, 41, 8, 1, 41, 7, 1, 42, 7, 1, 41, 8, 1, 42, 8, 1, 43, 7, 1, 42, 8, 1, 42, 7, 1, 43, 7, 1, 42, 8, 1, 43, 9, 1, 43, 8, 1, 42, 9, 1, 42, 8, 1, 43, 8, 1, 42, 9, 1, 43, 10, 1, 43, 9, 1, 42, 10, 1, 42, 9, 1, 43, 9, 1, 42, 10, 1, 43, 11, 1, 43, 10, 1, 42, 11, 1, 42, 10, 1, 43, 10, 1, 42, 11, 1, 43, 12, 1, 43, 11, 1, 42, 12, 1, 42, 11, 1, 43, 11, 1, 42, 12, 1, 43, 13, 1, 43, 12, 1, 42, 13, 1, 42, 12, 1, 43, 12, 1, 42, 13, 1, 43, 14, 1, 43, 13, 1, 42, 14, 1, 42, 13, 1, 43, 13, 1, 42, 14, 1, 43, 15, 1, 43, 14, 1, 42, 15, 1, 42, 14, 1, 43, 14, 1, 42, 15, 1, 43, 15, 1, 42, 14, 1, 41, 15, 1, 41, 14, 1, 42, 14, 1, 41, 15, 1, 42, 16, 1, 43, 15, 1, 42, 16, 1, 42, 15, 1, 43, 15, 1, 42, 16, 1, 43, 7, 1, 42, 6, 1, 41, 7, 1, 41, 6, 1, 42, 6, 1, 41, 7, 1, 42, 7, 1, 41, 6, 1, 40, 7, 1, 40, 6, 1, 41, 6, 1, 40, 7, 1, 41, 6, 1, 41, 5, 1, 40, 6, 1, 40, 5, 1, 41, 5, 1, 40, 6, 1, 41, 6, 1, 42, 5, 1, 41, 6, 1, 41, 5, 1, 42, 5, 1, 41, 6, 1, 42, 6, 1, 40, 5, 1, 39, 6, 1, 39, 5, 1, 40, 5, 1, 39, 6, 1, 40, 7, 1, 40, 6, 1, 39, 7, 1, 39, 6, 1, 40, 6, 1, 39, 7, 1, 40, 7, 1, 39, 6, 1, 38, 7, 1, 38, 6, 1, 39, 6, 1, 38, 7, 1, 39, 6, 1, 39, 5, 1, 38, 6, 1, 38, 5, 1, 39, 5, 1, 38, 6, 1, 39, 5, 1, 39, 4, 1, 38, 5, 1, 38, 4, 1, 39, 4, 1, 38, 5, 1, 39, 5, 1, 40, 4, 1, 39, 5, 1, 39, 4, 1, 40, 4, 1, 39, 5, 1, 40, 4, 1, 39, 3, 1, 38, 4, 1, 38, 3, 1, 39, 3, 1, 38, 4, 1, 39, 3, 1, 39, 2, 1, 38, 3, 1, 38, 2, 1, 39, 2, 1, 38, 3, 1, 39, 5, 1, 38, 4, 1, 37, 5, 1, 37, 4, 1, 38, 4, 1, 37, 5, 1, 38, 4, 1, 38, 3, 1, 37, 4, 1, 37, 3, 1, 38, 3, 1, 37, 4, 1, 38, 3, 1, 38, 2, 1, 37, 3, 1, 37, 2, 1, 38, 2, 1, 37, 3, 1, 38, 2, 1, 38, 1, 1, 37, 2, 1, 37, 1, 1, 38, 1, 1, 37, 2, 1, 38, 1, 1, 38, 0, 1, 37, 1, 1, 37, 0, 1, 38, 0, 1, 37, 1, 1, 38, 1, 1, 39, 0, 1, 38, 1, 1, 38, 0, 1, 39, 0, 1, 38, 1, 1, 39, 2, 1, 40, 1, 1, 39, 2, 1, 39, 1, 1, 40, 1, 1, 39, 2, 1, 40, 3, 1, 40, 2, 1, 39, 3, 1, 39, 2, 1, 40, 2, 1, 39, 3, 1, 40, 4, 1, 40, 3, 1, 39, 4, 1, 39, 3, 1, 40, 3, 1, 39, 4, 1, 40, 5, 1, 41, 4, 1, 40, 5, 1, 40, 4, 1, 41, 4, 1, 40, 5, 1, 41, 4, 1, 41, 3, 1, 40, 4, 1, 40, 3, 1, 41, 3, 1, 40, 4, 1, 41, 2, 1, 39, 1, 1, 38, 2, 1, 38, 1, 1, 39, 1, 1, 38, 2, 1, 39, 3, 1, 41, 2, 1, 40, 3, 1, 40, 2, 1, 41, 2, 1, 40, 3, 1, 41, 2, 1, 41, 1, 1, 40, 2, 1, 40, 1, 1, 41, 1, 1, 40, 2, 1, 41, 1, 1, 41, 0, 1, 40, 1, 1, 40, 0, 1, 41, 0, 1, 40, 1, 1, 41, 1, 1, 40, 0, 1, 39, 1, 1, 39, 0, 1, 40, 0, 1, 39, 1, 1, 40, 0, 1, 38, -1, 1, 37, 0, 1, 37, -1, 1, 38, -1, 1, 37, 0, 1, 38, 0, 1, 37, -1, 1, 36, 0, 1, 36, -1, 1, 37, -1, 1, 36, 0, 1, 37, 0, 1, 36, -1, 1, 35, 0, 1, 35, -1, 1, 36, -1, 1, 35, 0, 1, 36, 0, 1, 35, -1, 1, 34, 0, 1, 34, -1, 1, 35, -1, 1, 34, 0, 1, 35, -1, 1, 35, -2, 1, 34, -1, 1, 34, -2, 1, 35, -2, 1, 34, -1, 1, 35, -1, 1, 36, -2, 1, 35, -1, 1, 35, -2, 1, 36, -2, 1, 35, -1, 1, 36, 1, 1, 36, 0, 1, 35, 1, 1, 35, 0, 1, 36, 0, 1, 35, 1, 1, 36, 1, 1, 35, 0, 1, 34, 1, 1, 34, 0, 1, 35, 0, 1, 34, 1, 1, 35, 1, 1, 37, 0, 1, 36, 1, 1, 36, 0, 1, 37, 0, 1, 36, 1, 1, 37, -1, 1, 37, -2, 1, 36, -1, 1, 36, -2, 1, 37, -2, 1, 36, -1, 1, 37, -2, 1, 37, -3, 1, 36, -2, 1, 36, -3, 1, 37, -3, 1, 36, -2, 1, 37, -2, 1, 36, -3, 1, 35, -2, 1, 35, -3, 1, 36, -3, 1, 35, -2, 1, 36, -2, 1, 35, -3, 1, 34, -2, 1, 34, -3, 1, 35, -3, 1, 34, -2, 1, 35, -3, 1, 35, -4, 1, 34, -3, 1, 34, -4, 1, 35, -4, 1, 34, -3, 1, 35, -3, 1, 36, -4, 1, 35, -3, 1, 35, -4, 1, 36, -4, 1, 35, -3, 1, 36, -3, 1, 37, -4, 1, 36, -3, 1, 36, -4, 1, 37, -4, 1, 36, -3, 1, 37, -2, 1, 38, -3, 1, 37, -2, 1, 37, -3, 1, 38, -3, 1, 37, -2, 1, 38, -1, 1, 38, -2, 1, 37, -1, 1, 37, -2, 1, 38, -2, 1, 37, -1, 1, 38, 0, 1, 39, -1, 1, 38, 0, 1, 38, -1, 1, 39, -1, 1, 38, 0, 1, 39, 0, 1, 40, -1, 1, 39, 0, 1, 39, -1, 1, 40, -1, 1, 39, 0, 1, 40, -1, 1, 39, -2, 1, 38, -1, 1, 38, -2, 1, 39, -2, 1, 38, -1, 1, 39, -3, 1, 38, -4, 1, 37, -3, 1, 37, -4, 1, 38, -4, 1, 37, -3, 1, 38, -2, 1, 39, -3, 1, 38, -2, 1, 38, -3, 1, 39, -3, 1, 38, -2, 1, 39, -3, 1, 39, -4, 1, 38, -3, 1, 38, -4, 1, 39, -4, 1, 38, -3, 1, 39, -1, 1, 40, -2, 1, 39, -1, 1, 39, -2, 1, 40, -2, 1, 39, -1, 1, 40, -2, 1, 40, -3, 1, 39, -2, 1, 39, -3, 1, 40, -3, 1, 39, -2, 1, 40, -3, 1, 40, -4, 1, 39, -3, 1, 39, -4, 1, 40, -4, 1, 39, -3, 1, 40, -4, 1, 36, -5, 1, 35, -4, 1, 35, -5, 1, 36, -5, 1, 35, -4, 1, 36, -4, 1, 35, -5, 1, 34, -4, 1, 34, -5, 1, 35, -5, 1, 34, -4, 1, 35, -4, 1, 34, -5, 1, 33, -4, 1, 33, -5, 1, 34, -5, 1, 33, -4, 1, 34, -5, 1, 34, -6, 1, 33, -5, 1, 33, -6, 1, 34, -6, 1, 33, -5, 1, 34, -5, 1, 35, -6, 1, 34, -5, 1, 34, -6, 1, 35, -6, 1, 34, -5, 1, 35, -5, 1, 36, -6, 1, 35, -5, 1, 35, -6, 1, 36, -6, 1, 35, -5, 1, 36, -6, 1, 36, -7, 1, 35, -6, 1, 35, -7, 1, 36, -7, 1, 35, -6, 1, 36, -4, 1, 37, -5, 1, 36, -4, 1, 36, -5, 1, 37, -5, 1, 36, -4, 1, 37, -5, 1, 37, -6, 1, 36, -5, 1, 36, -6, 1, 37, -6, 1, 36, -5, 1, 37, -6, 1, 37, -7, 1, 36, -6, 1, 36, -7, 1, 37, -7, 1, 36, -6, 1, 37, -7, 1, 35, -8, 1, 34, -7, 1, 34, -8, 1, 35, -8, 1, 34, -7, 1, 35, -7, 1, 34, -8, 1, 33, -7, 1, 33, -8, 1, 34, -8, 1, 33, -7, 1, 34, -6, 1, 34, -7, 1, 33, -6, 1, 33, -7, 1, 34, -7, 1, 33, -6, 1, 34, -6, 1, 33, -7, 1, 32, -6, 1, 32, -7, 1, 33, -7, 1, 32, -6, 1, 33, -7, 1, 32, -8, 1, 31, -7, 1, 31, -8, 1, 32, -8, 1, 31, -7, 1, 32, -7, 1, 33, -8, 1, 32, -7, 1, 32, -8, 1, 33, -8, 1, 32, -7, 1, 33, -6, 1, 35, -7, 1, 34, -6, 1, 34, -7, 1, 35, -7, 1, 34, -6, 1, 35, -6, 1, 32, -7, 1, 31, -6, 1, 31, -7, 1, 32, -7, 1, 31, -6, 1, 32, -8, 1, 32, -9, 1, 31, -8, 1, 31, -9, 1, 32, -9, 1, 31, -8, 1, 32, -9, 1, 32, -10, 1, 31, -9, 1, 31, -10, 1, 32, -10, 1, 31, -9, 1, 32, -9, 1, 31, -10, 1, 30, -9, 1, 30, -10, 1, 31, -10, 1, 30, -9, 1, 31, -9, 1, 33, -10, 1, 32, -9, 1, 32, -10, 1, 33, -10, 1, 32, -9, 1, 33, -8, 1, 33, -9, 1, 32, -8, 1, 32, -9, 1, 33, -9, 1, 32, -8, 1, 33, -8, 1, 34, -9, 1, 33, -8, 1, 33, -9, 1, 34, -9, 1, 33, -8, 1, 34, -8, 1, 35, -9, 1, 34, -8, 1, 34, -9, 1, 35, -9, 1, 34, -8, 1, 35, -9, 1, 35, -10, 1, 34, -9, 1, 34, -10, 1, 35, -10, 1, 34, -9, 1, 35, -9, 1, 34, -10, 1, 33, -9, 1, 33, -10, 1, 34, -10, 1, 33, -9, 1, 34, -8, 1, 31, -9, 1, 30, -8, 1, 30, -9, 1, 31, -9, 1, 30, -8, 1, 31, -10, 1, 30, -11, 1, 29, -10, 1, 29, -11, 1, 30, -11, 1, 29, -10, 1, 30, -10, 1, 31, -11, 1, 30, -10, 1, 30, -11, 1, 31, -11, 1, 30, -10, 1, 31, -10, 1, 34, -11, 1, 33, -10, 1, 33, -11, 1, 34, -11, 1, 33, -10, 1, 34, -10, 1, 33, -11, 1, 32, -10, 1, 32, -11, 1, 33, -11, 1, 32, -10, 1, 33, -10, 1, 32, -11, 1, 31, -10, 1, 31, -11, 1, 32, -11, 1, 31, -10, 1, 32, -10, 1, 29, -11, 1, 28, -10, 1, 28, -11, 1, 29, -11, 1, 28, -10, 1, 29, -10, 1, 28, -11, 1, 27, -10, 1, 27, -11, 1, 28, -11, 1, 27, -10, 1, 28, -10, 1, 27, -11, 1, 26, -10, 1, 26, -11, 1, 27, -11, 1, 26, -10, 1, 27, -10, 1, 26, -11, 1, 25, -10, 1, 25, -11, 1, 26, -11, 1, 25, -10, 1, 26, -10, 1, 25, -11, 1, 24, -10, 1, 24, -11, 1, 25, -11, 1, 24, -10, 1, 25, -10, 1, 24, -11, 1, 23, -10, 1, 23, -11, 1, 24, -11, 1, 23, -10, 1, 24, -10, 1, 23, -11, 1, 22, -10, 1, 22, -11, 1, 23, -11, 1, 22, -10, 1, 23, -10, 1, 22, -11, 1, 21, -10, 1, 21, -11, 1, 22, -11, 1, 21, -10, 1, 22, -10, 1, 21, -11, 1, 20, -10, 1, 20, -11, 1, 21, -11, 1, 20, -10, 1, 21, -10, 1, 20, -11, 1, 19, -10, 1, 19, -11, 1, 20, -11, 1, 19, -10, 1, 20, -10, 1, 19, -11, 1, 18, -10, 1, 18, -11, 1, 19, -11, 1, 18, -10, 1, 19, -10, 1, 18, -11, 1, 17, -10, 1, 17, -11, 1, 18, -11, 1, 17, -10, 1, 18, -11, 1, 18, -12, 1, 17, -11, 1, 17, -12, 1, 18, -12, 1, 17, -11, 1, 18, -11, 1, 31, -12, 1, 30, -11, 1, 30, -12, 1, 31, -12, 1, 30, -11, 1, 31, -11, 1, 28, -12, 1, 27, -11, 1, 27, -12, 1, 28, -12, 1, 27, -11, 1, 28, -11, 1, 19, -12, 1, 18, -11, 1, 18, -12, 1, 19, -12, 1, 18, -11, 1, 19, -11, 1, 20, -12, 1, 19, -11, 1, 19, -12, 1, 20, -12, 1, 19, -11, 1, 20, -11, 1, 22, -12, 1, 21, -11, 1, 21, -12, 1, 22, -12, 1, 21, -11, 1, 22, -11, 1, 23, -12, 1, 22, -11, 1, 22, -12, 1, 23, -12, 1, 22, -11, 1, 23, -11, 1, 24, -12, 1, 23, -11, 1, 23, -12, 1, 24, -12, 1, 23, -11, 1, 24, -11, 1, 26, -12, 1, 25, -11, 1, 25, -12, 1, 26, -12, 1, 25, -11, 1, 26, -11, 1, 27, -12, 1, 26, -11, 1, 26, -12, 1, 27, -12, 1, 26, -11, 1, 27, -11, 1, 29, -12, 1, 28, -11, 1, 28, -12, 1, 29, -12, 1, 28, -11, 1, 29, -11, 1, 30, -12, 1, 29, -11, 1, 29, -12, 1, 30, -12, 1, 29, -11, 1, 30, -11, 1, 32, -12, 1, 31, -11, 1, 31, -12, 1, 32, -12, 1, 31, -11, 1, 32, -11, 1, 33, -12, 1, 32, -11, 1, 32, -12, 1, 33, -12, 1, 32, -11, 1, 33, -11, 1, 21, -12, 1, 20, -11, 1, 20, -12, 1, 21, -12, 1, 20, -11, 1, 21, -11, 1, 25, -12, 1, 24, -11, 1, 24, -12, 1, 25, -12, 1, 24, -11, 1, 25, -10, 1, 17, -11, 1, 16, -10, 1, 16, -11, 1, 17, -11, 1, 16, -10, 1, 17, -11, 1, 17, -12, 1, 16, -11, 1, 16, -12, 1, 17, -12, 1, 16, -11, 1, 17, -10, 1, 16, -11, 1, 15, -10, 1, 15, -11, 1, 16, -11, 1, 15, -10, 1, 16, -9, 1, 16, -10, 1, 15, -9, 1, 15, -10, 1, 16, -10, 1, 15, -9, 1, 16, -9, 1, 15, -10, 1, 14, -9, 1, 14, -10, 1, 15, -10, 1, 14, -9, 1, 15, -9, 1, 14, -10, 1, 13, -9, 1, 13, -10, 1, 14, -10, 1, 13, -9, 1, 14, -9, 1, 13, -10, 1, 12, -9, 1, 12, -10, 1, 13, -10, 1, 12, -9, 1, 13, -9, 1, 12, -10, 1, 11, -9, 1, 11, -10, 1, 12, -10, 1, 11, -9, 1, 12, -9, 1, 11, -10, 1, 10, -9, 1, 10, -10, 1, 11, -10, 1, 10, -9, 1, 11, -9, 1, 10, -10, 1, 9, -9, 1, 9, -10, 1, 10, -10, 1, 9, -9, 1, 10, -10, 1, 15, -11, 1, 14, -10, 1, 14, -11, 1, 15, -11, 1, 14, -10, 1, 15, -10, 1, 14, -11, 1, 13, -10, 1, 13, -11, 1, 14, -11, 1, 13, -10, 1, 14, -10, 1, 13, -11, 1, 12, -10, 1, 12, -11, 1, 13, -11, 1, 12, -10, 1, 13, -10, 1, 12, -11, 1, 11, -10, 1, 11, -11, 1, 12, -11, 1, 11, -10, 1, 12, -10, 1, 11, -11, 1, 10, -10, 1, 10, -11, 1, 11, -11, 1, 10, -10, 1, 11, -10, 1, 10, -11, 1, 9, -10, 1, 9, -11, 1, 10, -11, 1, 9, -10, 1, 10, -10, 1, 9, -11, 1, 8, -10, 1, 8, -11, 1, 9, -11, 1, 8, -10, 1, 9, -10, 1, 7, -11, 1, 6, -10, 1, 6, -11, 1, 7, -11, 1, 6, -10, 1, 7, -10, 1, 6, -11, 1, 5, -10, 1, 5, -11, 1, 6, -11, 1, 5, -10, 1, 6, -10, 1, 4, -11, 1, 3, -10, 1, 3, -11, 1, 4, -11, 1, 3, -10, 1, 4, -10, 1, 2, -11, 1, 1, -10, 1, 1, -11, 1, 2, -11, 1, 1, -10, 1, 2, -10, 1, 1, -11, 1, 0, -10, 1, 0, -11, 1, 1, -11, 1, 0, -10, 1, 1, -10, 1, 3, -11, 1, 2, -10, 1, 2, -11, 1, 3, -11, 1, 2, -10, 1, 3, -10, 1, 5, -11, 1, 4, -10, 1, 4, -11, 1, 5, -11, 1, 4, -10, 1, 5, -10, 1, 8, -11, 1, 7, -10, 1, 7, -11, 1, 8, -11, 1, 7, -10, 1, 8, -9, 1, 9, -10, 1, 8, -9, 1, 8, -10, 1, 9, -10, 1, 8, -9, 1, 9, -9, 1, 8, -10, 1, 7, -9, 1, 7, -10, 1, 8, -10, 1, 7, -9, 1, 8, -9, 1, 7, -10, 1, 6, -9, 1, 6, -10, 1, 7, -10, 1, 6, -9, 1, 7, -9, 1, 6, -10, 1, 5, -9, 1, 5, -10, 1, 6, -10, 1, 5, -9, 1, 6, -9, 1, 5, -10, 1, 4, -9, 1, 4, -10, 1, 5, -10, 1, 4, -9, 1, 5, -9, 1, 4, -10, 1, 3, -9, 1, 3, -10, 1, 4, -10, 1, 3, -9, 1, 4, -9, 1, 3, -10, 1, 2, -9, 1, 2, -10, 1, 3, -10, 1, 2, -9, 1, 3, -9, 1, 2, -10, 1, 1, -9, 1, 1, -10, 1, 2, -10, 1, 1, -9, 1, 2, -9, 1, 1, -10, 1, 0, -9, 1, 0, -10, 1, 1, -10, 1, 0, -9, 1, 1, -9, 1, 0, -10, 1, -1, -9, 1, -1, -10, 1, 0, -10, 1, -1, -9, 1, 0, -10, 1, 0, -11, 1, -1, -10, 1, -1, -11, 1, 0, -11, 1, -1, -10, 1, 0, -10, 1, -1, -11, 1, -2, -10, 1, -2, -11, 1, -1, -11, 1, -2, -10, 1, -1, -10, 1, -3, -11, 1, -4, -10, 1, -4, -11, 1, -3, -11, 1, -4, -10, 1, -3, -10, 1, -4, -11, 1, -5, -10, 1, -5, -11, 1, -4, -11, 1, -5, -10, 1, -4, -10, 1, -5, -11, 1, -6, -10, 1, -6, -11, 1, -5, -11, 1, -6, -10, 1, -5, -10, 1, -6, -11, 1, -7, -10, 1, -7, -11, 1, -6, -11, 1, -7, -10, 1, -6, -10, 1, -7, -11, 1, -8, -10, 1, -8, -11, 1, -7, -11, 1, -8, -10, 1, -7, -9, 1, -7, -10, 1, -8, -9, 1, -8, -10, 1, -7, -10, 1, -8, -9, 1, -7, -9, 1, -6, -10, 1, -7, -9, 1, -7, -10, 1, -6, -10, 1, -7, -9, 1, -6, -9, 1, -5, -10, 1, -6, -9, 1, -6, -10, 1, -5, -10, 1, -6, -9, 1, -5, -9, 1, -3, -10, 1, -4, -9, 1, -4, -10, 1, -3, -10, 1, -4, -9, 1, -3, -9, 1, -2, -10, 1, -3, -9, 1, -3, -10, 1, -2, -10, 1, -3, -9, 1, -2, -9, 1, -1, -10, 1, -2, -9, 1, -2, -10, 1, -1, -10, 1, -2, -9, 1, -1, -10, 1, -2, -11, 1, -3, -10, 1, -3, -11, 1, -2, -11, 1, -3, -10, 1, -2, -9, 1, -4, -10, 1, -5, -9, 1, -5, -10, 1, -4, -10, 1, -5, -9, 1, -4, -8, 1, -7, -9, 1, -8, -8, 1, -8, -9, 1, -7, -9, 1, -8, -8, 1, -7, -7, 1, -7, -8, 1, -8, -7, 1, -8, -8, 1, -7, -8, 1, -8, -7, 1, -7, -6, 1, -7, -7, 1, -8, -6, 1, -8, -7, 1, -7, -7, 1, -8, -6, 1, -7, -5, 1, -8, -6, 1, -9, -5, 1, -9, -6, 1, -8, -6, 1, -9, -5, 1, -8, -4, 1, -8, -5, 1, -9, -4, 1, -9, -5, 1, -8, -5, 1, -9, -4, 1, -8, -3, 1, -8, -4, 1, -9, -3, 1, -9, -4, 1, -8, -4, 1, -9, -3, 1, -8, -2, 1, -8, -3, 1, -9, -2, 1, -9, -3, 1, -8, -3, 1, -9, -2, 1, -8, -1, 1, -8, -2, 1, -9, -1, 1, -9, -2, 1, -8, -2, 1, -9, -1, 1, -8, 0, 1, -8, -1, 1, -9, 0, 1, -9, -1, 1, -8, -1, 1, -9, 0, 1, -8, 1, 1, -8, 0, 1, -9, 1, 1, -9, 0, 1, -8, 0, 1, -9, 1, 1, -8, 2, 1, -8, 1, 1, -9, 2, 1, -9, 1, 1, -8, 1, 1, -9, 2, 1, -8, 3, 1, -8, 2, 1, -9, 3, 1, -9, 2, 1, -8, 2, 1, -9, 3, 1, -8, 4, 1, -7, 3, 1, -8, 4, 1, -8, 3, 1, -7, 3, 1, -8, 4, 1, -7, 5, 1, -7, 4, 1, -8, 5, 1, -8, 4, 1, -7, 4, 1, -8, 5, 1, -7, 6, 1, -7, 5, 1, -8, 6, 1, -8, 5, 1, -7, 5, 1, -8, 6, 1, -7, 7, 1, -7, 6, 1, -8, 7, 1, -8, 6, 1, -7, 6, 1, -8, 7, 1, -7, 8, 1, -7, 7, 1, -8, 8, 1, -8, 7, 1, -7, 7, 1, -8, 8, 1, -7, 9, 1, -7, 8, 1, -8, 9, 1, -8, 8, 1, -7, 8, 1, -8, 9, 1, -7, 10, 1, -7, 9, 1, -8, 10, 1, -8, 9, 1, -7, 9, 1, -8, 10, 1, -7, 10, 1, -8, 9, 1, -9, 10, 1, -9, 9, 1, -8, 9, 1, -9, 10, 1, -8, 9, 1, -8, 8, 1, -9, 9, 1, -9, 8, 1, -8, 8, 1, -9, 9, 1, -8, 8, 1, -8, 7, 1, -9, 8, 1, -9, 7, 1, -8, 7, 1, -9, 8, 1, -8, 7, 1, -8, 6, 1, -9, 7, 1, -9, 6, 1, -8, 6, 1, -9, 7, 1, -8, 6, 1, -8, 5, 1, -9, 6, 1, -9, 5, 1, -8, 5, 1, -9, 6, 1, -8, 5, 1, -8, 4, 1, -9, 5, 1, -9, 4, 1, -8, 4, 1, -9, 5, 1, -8, 4, 1, -8, 3, 1, -9, 4, 1, -9, 3, 1, -8, 3, 1, -9, 4, 1, -8, 0, 1, -7, -1, 1, -8, 0, 1, -8, -1, 1, -7, -1, 1, -8, 0, 1, -7, -1, 1, -7, -2, 1, -8, -1, 1, -8, -2, 1, -7, -2, 1, -8, -1, 1, -7, 1, 1, -7, 0, 1, -8, 1, 1, -8, 0, 1, -7, 0, 1, -8, 1, 1, -7, 3, 1, -7, 2, 1, -8, 3, 1, -8, 2, 1, -7, 2, 1, -8, 3, 1, -7, 2, 1, -7, 1, 1, -8, 2, 1, -8, 1, 1, -7, 1, 1, -8, 2, 1, -7, -2, 1, -7, -3, 1, -8, -2, 1, -8, -3, 1, -7, -3, 1, -8, -2, 1, -7, -3, 1, -7, -4, 1, -8, -3, 1, -8, -4, 1, -7, -4, 1, -8, -3, 1, -7, -4, 1, -7, -5, 1, -8, -4, 1, -8, -5, 1, -7, -5, 1, -8, -4, 1, -7, -5, 1, -7, -6, 1, -8, -5, 1, -8, -6, 1, -7, -6, 1, -8, -5, 1, -7, 10, 1, -5, 9, 1, -6, 10, 1, -6, 9, 1, -5, 9, 1, -6, 10, 1, -5, 10, 1, -6, 9, 1, -7, 10, 1, -7, 9, 1, -6, 9, 1, -7, 10, 1, -6, 9, 1, -6, 8, 1, -7, 9, 1, -7, 8, 1, -6, 8, 1, -7, 9, 1, -6, 9, 1, -4, 8, 1, -5, 9, 1, -5, 8, 1, -4, 8, 1, -5, 9, 1, -4, 9, 1, -3, 8, 1, -4, 9, 1, -4, 8, 1, -3, 8, 1, -4, 9, 1, -3, 9, 1, -2, 8, 1, -3, 9, 1, -3, 8, 1, -2, 8, 1, -3, 9, 1, -2, 9, 1, -1, 8, 1, -2, 9, 1, -2, 8, 1, -1, 8, 1, -2, 9, 1, -1, 9, 1, 0, 8, 1, -1, 9, 1, -1, 8, 1, 0, 8, 1, -1, 9, 1, 0, 9, 1, 1, 8, 1, 0, 9, 1, 0, 8, 1, 1, 8, 1, 0, 9, 1, 1, 9, 1, 2, 8, 1, 1, 9, 1, 1, 8, 1, 2, 8, 1, 1, 9, 1, 2, 10, 1, 2, 9, 1, 1, 10, 1, 1, 9, 1, 2, 9, 1, 1, 10, 1, 2, 10, 1, 1, 9, 1, 0, 10, 1, 0, 9, 1, 1, 9, 1, 0, 10, 1, 1, 10, 1, 0, 9, 1, -1, 10, 1, -1, 9, 1, 0, 9, 1, -1, 10, 1, 0, 10, 1, -2, 9, 1, -3, 10, 1, -3, 9, 1, -2, 9, 1, -3, 10, 1, -2, 10, 1, -3, 9, 1, -4, 10, 1, -4, 9, 1, -3, 9, 1, -4, 10, 1, -3, 10, 1, -4, 9, 1, -5, 10, 1, -5, 9, 1, -4, 9, 1, -5, 10, 1, -4, 9, 1, -5, 8, 1, -6, 9, 1, -6, 8, 1, -5, 8, 1, -6, 9, 1, -5, 10, 1, -1, 9, 1, -2, 10, 1, -2, 9, 1, -1, 9, 1, -2, 10, 1, -1, 17, 1, 22, 16, 1, 21, 17, 1, 21, 16, 1, 22, 16, 1, 21, 17, 1, 22, 16, 1, 22, 15, 1, 21, 16, 1, 21, 15, 1, 22, 15, 1, 21, 16, 1, 22, 16, 1, 21, 15, 1, 20, 16, 1, 20, 15, 1, 21, 15, 1, 20, 16, 1, 21, 17, 1, 21, 16, 1, 20, 17, 1, 20, 16, 1, 21, 16, 1, 20, 17, 1, 21, 17, 1, 20, 16, 1, 19, 17, 1, 19, 16, 1, 20, 16, 1, 19, 17, 1, 20, 16, 1, 20, 15, 1, 19, 16, 1, 19, 15, 1, 20, 15, 1, 19, 16, 1, 20, 15, 1, 20, 14, 1, 19, 15, 1, 19, 14, 1, 20, 14, 1, 19, 15, 1, 20, 14, 1, 20, 13, 1, 19, 14, 1, 19, 13, 1, 20, 13, 1, 19, 14, 1, 20, 13, 1, 20, 12, 1, 19, 13, 1, 19, 12, 1, 20, 12, 1, 19, 13, 1, 20, 12, 1, 20, 11, 1, 19, 12, 1, 19, 11, 1, 20, 11, 1, 19, 12, 1, 20, 11, 1, 20, 10, 1, 19, 11, 1, 19, 10, 1, 20, 10, 1, 19, 11, 1, 20, 10, 1, 20, 9, 1, 19, 10, 1, 19, 9, 1, 20, 9, 1, 19, 10, 1, 20, 10, 1, 19, 9, 1, 18, 10, 1, 18, 9, 1, 19, 9, 1, 18, 10, 1, 19, 10, 1, 18, 9, 1, 17, 10, 1, 17, 9, 1, 18, 9, 1, 17, 10, 1, 18, 10, 1, 17, 9, 1, 16, 10, 1, 16, 9, 1, 17, 9, 1, 16, 10, 1, 17, 10, 1, 16, 9, 1, 15, 10, 1, 15, 9, 1, 16, 9, 1, 15, 10, 1, 16, 10, 1, 15, 9, 1, 14, 10, 1, 14, 9, 1, 15, 9, 1, 14, 10, 1, 15, 10, 1, 14, 9, 1, 13, 10, 1, 13, 9, 1, 14, 9, 1, 13, 10, 1, 14, 10, 1, 13, 9, 1, 12, 10, 1, 12, 9, 1, 13, 9, 1, 12, 10, 1, 13, 10, 1, 12, 9, 1, 11, 10, 1, 11, 9, 1, 12, 9, 1, 11, 10, 1, 12, 10, 1, 11, 9, 1, 10, 10, 1, 10, 9, 1, 11, 9, 1, 10, 10, 1, 11, 10, 1, 10, 9, 1, 9, 10, 1, 9, 9, 1, 10, 9, 1, 9, 10, 1, 10, 10, 1, 9, 9, 1, 8, 10, 1, 8, 9, 1, 9, 9, 1, 8, 10, 1, 9, 10, 1, 8, 9, 1, 7, 10, 1, 7, 9, 1, 8, 9, 1, 7, 10, 1, 8, 10, 1, 7, 9, 1, 6, 10, 1, 6, 9, 1, 7, 9, 1, 6, 10, 1, 7, 10, 1, 6, 9, 1, 5, 10, 1, 5, 9, 1, 6, 9, 1, 5, 10, 1, 6, 10, 1, 5, 9, 1, 4, 10, 1, 4, 9, 1, 5, 9, 1, 4, 10, 1, 5, 10, 1, 4, 9, 1, 3, 10, 1, 3, 9, 1, 4, 9, 1, 3, 10, 1, 4, 10, 1, 3, 9, 1, 2, 10, 1, 2, 9, 1, 3, 9, 1, 2, 10, 1, 3, 11, 1, 4, 10, 1, 3, 11, 1, 3, 10, 1, 4, 10, 1, 3, 11, 1, 4, 11, 1, 5, 10, 1, 4, 11, 1, 4, 10, 1, 5, 10, 1, 4, 11, 1, 5, 11, 1, 6, 10, 1, 5, 11, 1, 5, 10, 1, 6, 10, 1, 5, 11, 1, 6, 11, 1, 7, 10, 1, 6, 11, 1, 6, 10, 1, 7, 10, 1, 6, 11, 1, 7, 11, 1, 8, 10, 1, 7, 11, 1, 7, 10, 1, 8, 10, 1, 7, 11, 1, 8, 11, 1, 9, 10, 1, 8, 11, 1, 8, 10, 1, 9, 10, 1, 8, 11, 1, 9, 11, 1, 10, 10, 1, 9, 11, 1, 9, 10, 1, 10, 10, 1, 9, 11, 1, 10, 11, 1, 11, 10, 1, 10, 11, 1, 10, 10, 1, 11, 10, 1, 10, 11, 1, 11, 11, 1, 12, 10, 1, 11, 11, 1, 11, 10, 1, 12, 10, 1, 11, 11, 1, 12, 11, 1, 13, 10, 1, 12, 11, 1, 12, 10, 1, 13, 10, 1, 12, 11, 1, 13, 11, 1, 14, 10, 1, 13, 11, 1, 13, 10, 1, 14, 10, 1, 13, 11, 1, 14, 11, 1, 15, 10, 1, 14, 11, 1, 14, 10, 1, 15, 10, 1, 14, 11, 1, 15, 11, 1, 16, 10, 1, 15, 11, 1, 15, 10, 1, 16, 10, 1, 15, 11, 1, 16, 11, 1, 17, 10, 1, 16, 11, 1, 16, 10, 1, 17, 10, 1, 16, 11, 1, 17, 11, 1, 18, 10, 1, 17, 11, 1, 17, 10, 1, 18, 10, 1, 17, 11, 1, 18, 11, 1, 19, 10, 1, 18, 11, 1, 18, 10, 1, 19, 10, 1, 18, 11, 1, 19, 12, 1, 19, 11, 1, 18, 12, 1, 18, 11, 1, 19, 11, 1, 18, 12, 1, 19, 14, 1, 19, 13, 1, 18, 14, 1, 18, 13, 1, 19, 13, 1, 18, 14, 1, 19, 15, 1, 19, 14, 1, 18, 15, 1, 18, 14, 1, 19, 14, 1, 18, 15, 1, 19, 16, 1, 19, 15, 1, 18, 16, 1, 18, 15, 1, 19, 15, 1, 18, 16, 1, 19, 13, 1, 19, 12, 1, 18, 13, 1, 18, 12, 1, 19, 12, 1, 18, 13, 1, 19, 14, 1, 18, 13, 1, 17, 14, 1, 17, 13, 1, 18, 13, 1, 17, 14, 1, 18, 15, 1, 18, 14, 1, 17, 15, 1, 17, 14, 1, 18, 14, 1, 17, 15, 1, 18, 16, 1, 18, 15, 1, 17, 16, 1, 17, 15, 1, 18, 15, 1, 17, 16, 1, 18, 17, 1, 19, 16, 1, 18, 17, 1, 18, 16, 1, 19, 16, 1, 18, 17, 1, 19, 13, 1, 18, 12, 1, 17, 13, 1, 17, 12, 1, 18, 12, 1, 17, 13, 1, 18, 12, 1, 18, 11, 1, 17, 12, 1, 17, 11, 1, 18, 11, 1, 17, 12, 1, 18, 12, 1, 17, 11, 1, 16, 12, 1, 16, 11, 1, 17, 11, 1, 16, 12, 1, 17, 13, 1, 17, 12, 1, 16, 13, 1, 16, 12, 1, 17, 12, 1, 16, 13, 1, 17, 14, 1, 17, 13, 1, 16, 14, 1, 16, 13, 1, 17, 13, 1, 16, 14, 1, 17, 13, 1, 16, 12, 1, 15, 13, 1, 15, 12, 1, 16, 12, 1, 15, 13, 1, 16, 12, 1, 16, 11, 1, 15, 12, 1, 15, 11, 1, 16, 11, 1, 15, 12, 1, 16, 12, 1, 14, 11, 1, 13, 12, 1, 13, 11, 1, 14, 11, 1, 13, 12, 1, 14, 12, 1, 15, 11, 1, 14, 12, 1, 14, 11, 1, 15, 11, 1, 14, 12, 1, 15, 14, 1, 16, 13, 1, 15, 14, 1, 15, 13, 1, 16, 13, 1, 15, 14, 1, 16, 14, 1, 15, 13, 1, 14, 14, 1, 14, 13, 1, 15, 13, 1, 14, 14, 1, 15, 13, 1, 14, 12, 1, 13, 13, 1, 13, 12, 1, 14, 12, 1, 13, 13, 1, 14, 13, 1, 15, 12, 1, 14, 13, 1, 14, 12, 1, 15, 12, 1, 14, 13, 1, 15, 14, 1, 14, 13, 1, 13, 14, 1, 13, 13, 1, 14, 13, 1, 13, 14, 1, 14, 14, 1, 13, 13, 1, 12, 14, 1, 12, 13, 1, 13, 13, 1, 12, 14, 1, 13, 13, 1, 12, 12, 1, 11, 13, 1, 11, 12, 1, 12, 12, 1, 11, 13, 1, 12, 12, 1, 12, 11, 1, 11, 12, 1, 11, 11, 1, 12, 11, 1, 11, 12, 1, 12, 12, 1, 13, 11, 1, 12, 12, 1, 12, 11, 1, 13, 11, 1, 12, 12, 1, 13, 13, 1, 13, 12, 1, 12, 13, 1, 12, 12, 1, 13, 12, 1, 12, 13, 1, 13, 13, 1, 11, 12, 1, 10, 13, 1, 10, 12, 1, 11, 12, 1, 10, 13, 1, 11, 14, 1, 12, 13, 1, 11, 14, 1, 11, 13, 1, 12, 13, 1, 11, 14, 1, 12, 12, 1, 11, 11, 1, 10, 12, 1, 10, 11, 1, 11, 11, 1, 10, 12, 1, 11, 12, 1, 10, 11, 1, 9, 12, 1, 9, 11, 1, 10, 11, 1, 9, 12, 1, 10, 12, 1, 9, 11, 1, 8, 12, 1, 8, 11, 1, 9, 11, 1, 8, 12, 1, 9, 13, 1, 10, 12, 1, 9, 13, 1, 9, 12, 1, 10, 12, 1, 9, 13, 1, 10, 14, 1, 11, 13, 1, 10, 14, 1, 10, 13, 1, 11, 13, 1, 10, 14, 1, 11, 14, 1, 10, 13, 1, 9, 14, 1, 9, 13, 1, 10, 13, 1, 9, 14, 1, 10, 13, 1, 9, 12, 1, 8, 13, 1, 8, 12, 1, 9, 12, 1, 8, 13, 1, 9, 12, 1, 8, 11, 1, 7, 12, 1, 7, 11, 1, 8, 11, 1, 7, 12, 1, 8, 14, 1, 9, 13, 1, 8, 14, 1, 8, 13, 1, 9, 13, 1, 8, 14, 1, 9, 21, 1, 23, 20, 1, 22, 21, 1, 22, 20, 1, 23, 20, 1, 22, 21, 1, 23, 24, 1, 22, 23, 0, 21, 24, 0, 21, 23, 1, 22, 23, 0, 21, 24, 1, 22, 23, 1, 22, 22, 0, 21, 23, 0, 21, 22, 1, 22, 22, 0, 21, 23, 1, 22, 21, 1, 22, 20, 0, 21, 21, 0, 21, 20, 1, 22, 20, 0, 21, 21, 1, 22, 20, 1, 22, 19, 0, 21, 20, 0, 21, 19, 1, 22, 19, 0, 21, 20, 1, 22, 19, 1, 22, 18, 0, 21, 19, 0, 21, 18, 1, 22, 18, 0, 21, 19, 1, 22, 22, 1, 22, 21, 0, 21, 22, 0, 21, 21, 1, 22, 21, 0, 21, 22, 1, 22, 17, 1, 22, 17, 1, 21, 18, 0, 21, 18, 1, 22, 17, 1, 22, 18, 0, 21, 18, 0, 21, 17, 1, 20, 18, 0, 20, 17, 1, 21, 17, 1, 20, 18, 0, 21, 18, 0, 20, 17, 1, 19, 18, 0, 19, 17, 1, 20, 17, 1, 19, 18, 0, 20, 18, 0, 19, 17, 1, 18, 18, 0, 18, 17, 1, 19, 17, 1, 18, 18, 0, 19, 17, 1, 18, 17, 0, 17, 18, 0, 17, 18, 0, 18, 17, 1, 18, 18, 0, 17, 16, 1, 18, 16, 1, 17, 17, 0, 17, 17, 1, 18, 16, 1, 18, 17, 0, 17, 16, 1, 17, 16, 0, 16, 17, 0, 16, 17, 0, 17, 16, 1, 17, 17, 0, 16, 16, 1, 17, 15, 0, 16, 16, 0, 16, 15, 1, 17, 15, 0, 16, 16, 1, 17, 14, 1, 17, 14, 1, 16, 15, 0, 16, 15, 1, 17, 14, 1, 17, 15, 0, 16, 15, 0, 16, 14, 1, 15, 15, 0, 15, 14, 1, 16, 14, 1, 15, 15, 0, 16, 15, 0, 15, 14, 1, 14, 15, 0, 14, 14, 1, 15, 14, 1, 14, 15, 0, 15, 15, 0, 14, 14, 1, 13, 15, 0, 13, 14, 1, 14, 14, 1, 13, 15, 0, 14, 15, 0, 12, 14, 1, 11, 15, 0, 11, 14, 1, 12, 14, 1, 11, 15, 0, 12, 15, 0, 11, 14, 1, 10, 15, 0, 10, 14, 1, 11, 14, 1, 10, 15, 0, 11, 15, 0, 10, 14, 1, 9, 15, 0, 9, 14, 1, 10, 14, 1, 9, 15, 0, 10, 15, 0, 9, 14, 1, 8, 15, 0, 8, 14, 1, 9, 14, 1, 8, 15, 0, 9, 14, 1, 8, 14, 0, 7, 15, 0, 7, 15, 0, 8, 14, 1, 8, 15, 0, 7, 15, 0, 13, 14, 1, 12, 15, 0, 12, 14, 1, 13, 14, 1, 12, 15, 0, 13, 13, 1, 8, 13, 1, 7, 14, 0, 7, 14, 1, 8, 13, 1, 8, 14, 0, 7, 13, 1, 7, 13, 0, 6, 14, 0, 6, 14, 0, 7, 13, 1, 7, 14, 0, 6, 13, 1, 7, 12, 0, 6, 13, 0, 6, 12, 1, 7, 12, 0, 6, 13, 1, 7, 11, 1, 7, 11, 1, 6, 12, 0, 6, 12, 1, 7, 11, 1, 7, 12, 0, 6, 12, 0, 6, 11, 1, 5, 12, 0, 5, 11, 1, 6, 11, 1, 5, 12, 0, 6, 12, 0, 5, 11, 1, 4, 12, 0, 4, 11, 1, 5, 11, 1, 4, 12, 0, 5, 12, 0, 4, 11, 1, 3, 12, 0, 3, 11, 1, 4, 11, 1, 3, 12, 0, 4, 11, 1, 3, 11, 0, 2, 12, 0, 2, 12, 0, 3, 11, 1, 3, 12, 0, 2, 10, 1, 3, 10, 1, 2, 11, 0, 2, 11, 1, 3, 10, 1, 3, 11, 0, 2, 11, 0, 2, 10, 1, 1, 11, 0, 1, 10, 1, 2, 10, 1, 1, 11, 0, 2, 11, 0, 0, 10, 1, -1, 11, 0, -1, 10, 1, 0, 10, 1, -1, 11, 0, 0, 11, 0, -1, 10, 1, -2, 11, 0, -2, 10, 1, -1, 10, 1, -2, 11, 0, -1, 11, 0, -2, 10, 1, -3, 11, 0, -3, 10, 1, -2, 10, 1, -3, 11, 0, -2, 11, 0, -3, 10, 1, -4, 11, 0, -4, 10, 1, -3, 10, 1, -4, 11, 0, -3, 11, 0, -4, 10, 1, -5, 11, 0, -5, 10, 1, -4, 10, 1, -5, 11, 0, -4, 11, 0, -5, 10, 1, -6, 11, 0, -6, 10, 1, -5, 10, 1, -6, 11, 0, -5, 11, 0, -6, 10, 1, -7, 11, 0, -7, 10, 1, -6, 10, 1, -7, 11, 0, -6, 11, 0, -7, 10, 1, -8, 11, 0, -8, 10, 1, -7, 10, 1, -8, 11, 0, -7, 11, 0, -8, 10, 1, -9, 11, 0, -9, 10, 1, -8, 10, 1, -9, 11, 0, -8, 10, 1, -9, 10, 0, -10, 11, 0, -10, 11, 0, -9, 10, 1, -9, 11, 0, -10, 11, 0, 1, 10, 1, 0, 11, 0, 0, 10, 1, 1, 10, 1, 0, 11, 0, 1, 10, 1, -9, 9, 0, -10, 10, 0, -10, 9, 1, -9, 9, 0, -10, 10, 1, -9, 9, 1, -9, 8, 0, -10, 9, 0, -10, 8, 1, -9, 8, 0, -10, 9, 1, -9, 8, 1, -9, 7, 0, -10, 8, 0, -10, 7, 1, -9, 7, 0, -10, 8, 1, -9, 7, 1, -9, 6, 0, -10, 7, 0, -10, 6, 1, -9, 6, 0, -10, 7, 1, -9, 6, 1, -9, 5, 0, -10, 6, 0, -10, 5, 1, -9, 5, 0, -10, 6, 1, -9, 5, 1, -9, 4, 0, -10, 5, 0, -10, 4, 1, -9, 4, 0, -10, 5, 1, -9, 4, 1, -9, 3, 0, -10, 4, 0, -10, 3, 1, -9, 3, 0, -10, 4, 1, -9, 3, 1, -9, 2, 0, -10, 3, 0, -10, 2, 1, -9, 2, 0, -10, 3, 1, -9, 2, 1, -9, 1, 0, -10, 2, 0, -10, 1, 1, -9, 1, 0, -10, 2, 1, -9, 1, 1, -9, 0, 0, -10, 1, 0, -10, 0, 1, -9, 0, 0, -10, 1, 1, -9, 0, 1, -9, -1, 0, -10, 0, 0, -10, -1, 1, -9, -1, 0, -10, 0, 1, -9, -1, 1, -9, -2, 0, -10, -1, 0, -10, -2, 1, -9, -2, 0, -10, -1, 1, -9, -2, 1, -9, -3, 0, -10, -2, 0, -10, -3, 1, -9, -3, 0, -10, -2, 1, -9, -3, 1, -9, -4, 0, -10, -3, 0, -10, -4, 1, -9, -4, 0, -10, -3, 1, -9, -4, 1, -9, -5, 0, -10, -4, 0, -10, -5, 1, -9, -5, 0, -10, -4, 1, -9, -5, 1, -9, -6, 0, -10, -5, 0, -10, -6, 1, -9, -6, 0, -10, -5, 1, -9, -6, 1, -9, -7, 0, -10, -6, 0, -10, -7, 0, -9, -7, 0, -10, -6, 1, -9, -6, 1, -8, -7, 0, -9, -6, 1, -9, -7, 1, -8, -7, 0, -9, -6, 1, -8, -7, 1, -8, -8, 0, -9, -7, 0, -9, -8, 1, -8, -8, 0, -9, -7, 1, -8, -8, 1, -8, -9, 0, -9, -8, 0, -9, -9, 1, -8, -9, 0, -9, -8, 1, -8, -9, 1, -8, -10, 0, -9, -9, 0, -9, -10, 1, -8, -10, 0, -9, -9, 1, -8, -10, 1, -8, -11, 0, -9, -10, 0, -9, -11, 1, -8, -11, 0, -9, -10, 1, -8, -11, 1, -8, -12, 0, -9, -11, 0, -9, -12, 0, -8, -12, 0, -9, -11, 1, -8, -11, 1, -7, -12, 0, -8, -11, 1, -8, -12, 0, -7, -12, 0, -8, -11, 1, -7, -11, 1, -6, -12, 0, -7, -11, 1, -7, -12, 0, -6, -12, 0, -7, -11, 1, -6, -11, 1, -5, -12, 0, -6, -11, 1, -6, -12, 0, -5, -12, 0, -6, -11, 1, -5, -11, 1, -4, -12, 0, -5, -11, 1, -5, -12, 0, -4, -12, 0, -5, -11, 1, -4, -11, 1, -3, -12, 0, -4, -11, 1, -4, -12, 0, -3, -12, 0, -4, -11, 1, -3, -11, 1, -2, -12, 0, -3, -11, 1, -3, -12, 0, -2, -12, 0, -3, -11, 1, -2, -11, 1, -1, -12, 0, -2, -11, 1, -2, -12, 0, -1, -12, 0, -2, -11, 1, -1, -11, 1, 0, -12, 0, -1, -11, 1, -1, -12, 0, 0, -12, 0, -1, -11, 1, 0, -11, 1, 1, -12, 0, 0, -11, 1, 0, -12, 0, 1, -12, 0, 0, -11, 1, 1, -11, 1, 2, -12, 0, 1, -11, 1, 1, -12, 0, 2, -12, 0, 1, -11, 1, 2, -11, 1, 3, -12, 0, 2, -11, 1, 2, -12, 0, 3, -12, 0, 2, -11, 1, 3, -11, 1, 4, -12, 0, 3, -11, 1, 3, -12, 0, 4, -12, 0, 3, -11, 1, 4, -11, 1, 5, -12, 0, 4, -11, 1, 4, -12, 0, 5, -12, 0, 4, -11, 1, 5, -11, 1, 6, -12, 0, 5, -11, 1, 5, -12, 0, 6, -12, 0, 5, -11, 1, 6, -11, 1, 7, -12, 0, 6, -11, 1, 6, -12, 0, 7, -12, 0, 6, -11, 1, 7, -11, 1, 9, -12, 0, 8, -11, 1, 8, -12, 0, 9, -12, 0, 8, -11, 1, 9, -11, 1, 10, -12, 0, 9, -11, 1, 9, -12, 0, 10, -12, 0, 9, -11, 1, 10, -11, 1, 11, -12, 0, 10, -11, 1, 10, -12, 0, 11, -12, 0, 10, -11, 1, 11, -11, 1, 12, -12, 0, 11, -11, 1, 11, -12, 0, 12, -12, 0, 11, -11, 1, 12, -11, 1, 13, -12, 0, 12, -11, 1, 12, -12, 0, 13, -12, 0, 12, -11, 1, 13, -11, 1, 14, -12, 0, 13, -11, 1, 13, -12, 0, 14, -12, 0, 13, -11, 1, 14, -11, 1, 15, -12, 0, 14, -11, 1, 14, -12, 0, 15, -12, 0, 14, -11, 1, 15, -11, 1, 16, -12, 0, 15, -11, 1, 15, -12, 1, 16, -12, 0, 15, -11, 1, 16, -11, 1, 8, -12, 0, 7, -11, 1, 7, -12, 0, 8, -12, 0, 7, -11, 1, 8, -12, 1, 16, -13, 0, 15, -12, 0, 15, -13, 0, 16, -13, 0, 15, -12, 1, 16, -12, 1, 19, -13, 0, 18, -12, 1, 18, -13, 0, 19, -13, 0, 18, -12, 1, 19, -12, 1, 20, -13, 0, 19, -12, 1, 19, -13, 0, 20, -13, 0, 19, -12, 1, 20, -12, 1, 21, -13, 0, 20, -12, 1, 20, -13, 0, 21, -13, 0, 20, -12, 1, 21, -12, 1, 22, -13, 0, 21, -12, 1, 21, -13, 0, 22, -13, 0, 21, -12, 1, 22, -12, 1, 18, -13, 0, 17, -12, 1, 17, -13, 0, 18, -13, 0, 17, -12, 1, 18, -12, 1, 17, -13, 0, 16, -12, 1, 16, -13, 0, 17, -13, 0, 16, -12, 1, 17, -12, 1, 23, -13, 0, 22, -12, 1, 22, -13, 0, 23, -13, 0, 22, -12, 1, 23, -12, 1, 24, -13, 0, 23, -12, 1, 23, -13, 0, 24, -13, 0, 23, -12, 1, 24, -12, 1, 25, -13, 0, 24, -12, 1, 24, -13, 0, 25, -13, 0, 24, -12, 1, 25, -12, 1, 26, -13, 0, 25, -12, 1, 25, -13, 0, 26, -13, 0, 25, -12, 1, 26, -12, 1, 27, -13, 0, 26, -12, 1, 26, -13, 0, 27, -13, 0, 26, -12, 1, 27, -12, 1, 28, -13, 0, 27, -12, 1, 27, -13, 0, 28, -13, 0, 27, -12, 1, 28, -12, 1, 29, -13, 0, 28, -12, 1, 28, -13, 0, 29, -13, 0, 28, -12, 1, 29, -12, 1, 30, -13, 0, 29, -12, 1, 29, -13, 0, 30, -13, 0, 29, -12, 1, 30, -12, 1, 31, -13, 0, 30, -12, 1, 30, -13, 0, 31, -13, 0, 30, -12, 1, 31, -12, 1, 32, -13, 0, 31, -12, 1, 31, -13, 0, 32, -13, 0, 31, -12, 1, 32, -12, 1, 33, -13, 0, 32, -12, 1, 32, -13, 0, 33, -13, 0, 32, -12, 1, 33, -13, 0, 34, -13, 0, 33, -12, 1, 33, -12, 0, 34, -13, 0, 34, -12, 1, 33, -12, 0, 34, -12, 1, 33, -11, 1, 33, -11, 1, 34, -12, 0, 34, -11, 1, 33, -12, 0, 35, -12, 0, 34, -11, 1, 34, -11, 0, 35, -12, 0, 35, -11, 1, 34, -11, 0, 35, -11, 1, 34, -10, 1, 34, -10, 1, 35, -11, 0, 35, -10, 1, 34, 20, 1, 20, 19, 0, 20, 19, 1, 20, 20, 0, 20, 19, 0, 20, 20, 1, 20, -9, 0, 36, -10, 1, 35, -9, 1, 35, -10, 0, 36, -10, 1, 35, -9, 0, 36, -8, 0, 36, -8, 1, 35, -7, 1, 35, -7, 1, 36, -8, 0, 36, -7, 1, 35, -7, 1, 37, -8, 0, 36, -7, 1, 36, -8, 0, 37, -8, 0, 36, -7, 1, 37, -8, 0, 36, -9, 1, 35, -8, 1, 35, -9, 0, 36, -9, 1, 35, -8, 0, 36, -8, 0, 38, -8, 0, 37, -7, 1, 37, -7, 0, 38, -8, 0, 38, -7, 1, 37, -6, 0, 38, -7, 1, 37, -6, 1, 37, -7, 0, 38, -7, 1, 37, -6, 0, 38, -5, 0, 38, -6, 1, 37, -5, 1, 37, -6, 0, 38, -6, 1, 37, -5, 0, 38, -4, 1, 38, -5, 1, 37, -4, 1, 37, -5, 0, 38, -5, 1, 37, -4, 1, 38, -4, 1, 39, -5, 0, 38, -4, 1, 38, -5, 0, 39, -5, 0, 38, -4, 1, 39, -4, 1, 40, -5, 0, 39, -4, 1, 39, -5, 0, 40, -5, 0, 39, -4, 1, 40, -1, 0, 41, -1, 1, 40, 0, 1, 40, 0, 1, 41, -1, 0, 41, 0, 1, 40, -1, 0, 41, -2, 1, 40, -1, 1, 40, -2, 0, 41, -2, 1, 40, -1, 0, 41, -2, 0, 41, -3, 1, 40, -2, 1, 40, -3, 0, 41, -3, 1, 40, -2, 0, 41, -3, 0, 41, -4, 1, 40, -3, 1, 40, -4, 0, 41, -4, 1, 40, -3, 0, 41, -5, 0, 41, -5, 0, 40, -4, 1, 40, -4, 0, 41, -5, 0, 41, -4, 1, 40, 1, 0, 42, 0, 1, 41, 1, 1, 41, 0, 0, 42, 0, 1, 41, 1, 0, 42, -1, 0, 42, -1, 0, 41, 0, 1, 41, 0, 0, 42, -1, 0, 42, 0, 1, 41, 2, 0, 42, 1, 1, 41, 2, 1, 41, 1, 0, 42, 1, 1, 41, 2, 0, 42, 3, 0, 42, 2, 1, 41, 3, 1, 41, 2, 0, 42, 2, 1, 41, 3, 0, 42, 4, 0, 42, 3, 1, 41, 4, 1, 41, 3, 0, 42, 3, 1, 41, 4, 0, 42, 4, 0, 42, 4, 1, 41, 5, 1, 41, 5, 1, 42, 4, 0, 42, 5, 1, 41, 4, 0, 43, 4, 0, 42, 5, 1, 42, 5, 0, 43, 4, 0, 43, 5, 1, 42, 6, 0, 43, 5, 1, 42, 6, 1, 42, 5, 0, 43, 5, 1, 42, 6, 0, 43, 6, 0, 43, 6, 1, 42, 7, 1, 42, 7, 1, 43, 6, 0, 43, 7, 1, 42, 6, 0, 44, 6, 0, 43, 7, 1, 43, 7, 0, 44, 6, 0, 44, 7, 1, 43, 8, 0, 44, 7, 1, 43, 8, 1, 43, 7, 0, 44, 7, 1, 43, 8, 0, 44, 9, 0, 44, 8, 1, 43, 9, 1, 43, 8, 0, 44, 8, 1, 43, 9, 0, 44, 10, 0, 44, 9, 1, 43, 10, 1, 43, 9, 0, 44, 9, 1, 43, 10, 0, 44, 11, 0, 44, 10, 1, 43, 11, 1, 43, 10, 0, 44, 10, 1, 43, 11, 0, 44, 12, 0, 44, 11, 1, 43, 12, 1, 43, 11, 0, 44, 11, 1, 43, 12, 0, 44, 13, 0, 44, 12, 1, 43, 13, 1, 43, 12, 0, 44, 12, 1, 43, 13, 0, 44, 14, 0, 44, 13, 1, 43, 14, 1, 43, 13, 0, 44, 13, 1, 43, 14, 0, 44, 15, 0, 44, 14, 1, 43, 15, 1, 43, 14, 0, 44, 14, 1, 43, 15, 0, 44, 16, 0, 44, 15, 1, 43, 16, 1, 43, 15, 0, 44, 15, 1, 43, 16, 0, 44, 17, 0, 44, 16, 1, 43, 17, 1, 43, 16, 0, 44, 16, 1, 43, 17, 0, 44, 18, 0, 44, 17, 1, 43, 18, 0, 43, 17, 0, 44, 17, 1, 43, 18, 0, 44, 18, 0, 43, 17, 1, 42, 18, 0, 42, 17, 1, 43, 17, 1, 42, 18, 0, 43, 18, 0, 42, 17, 1, 41, 18, 1, 41, 17, 1, 42, 17, 1, 41, 18, 0, 42, 19, 0, 42, 18, 1, 41, 19, 1, 41, 18, 0, 42, 18, 1, 41, 19, 0, 42, 20, 0, 42, 19, 1, 41, 20, 1, 41, 19, 0, 42, 19, 1, 41, 20, 0, 42, 21, 0, 42, 20, 1, 41, 21, 0, 41, 20, 0, 42, 20, 1, 41, 21, 0, 42, 21, 0, 41, 20, 1, 40, 21, 0, 40, 20, 1, 41, 20, 1, 40, 21, 0, 41, 21, 0, 40, 20, 1, 39, 21, 1, 39, 20, 1, 40, 20, 1, 39, 21, 0, 40, 22, 0, 40, 21, 1, 39, 22, 0, 39, 21, 0, 40, 21, 1, 39, 22, 0, 40, 22, 0, 39, 21, 1, 38, 22, 0, 38, 21, 1, 39, 21, 1, 38, 22, 0, 39, 22, 0, 38, 21, 1, 37, 22, 1, 37, 21, 1, 38, 21, 1, 37, 22, 0, 38, 23, 0, 38, 22, 1, 37, 23, 0, 37, 22, 0, 38, 22, 1, 37, 23, 0, 38, 23, 0, 37, 22, 1, 36, 23, 0, 36, 22, 1, 37, 22, 1, 36, 23, 0, 37, 23, 0, 36, 22, 1, 35, 23, 1, 35, 22, 1, 36, 22, 1, 35, 23, 0, 36, 24, 0, 36, 23, 1, 35, 24, 0, 35, 23, 0, 36, 23, 1, 35, 24, 0, 36, 24, 0, 35, 23, 1, 34, 24, 0, 34, 23, 1, 35, 23, 1, 34, 24, 0, 35, 24, 0, 34, 23, 1, 33, 24, 1, 33, 23, 1, 34, 23, 1, 33, 24, 0, 34, 25, 0, 34, 24, 1, 33, 25, 0, 33, 24, 0, 34, 24, 1, 33, 25, 0, 34, 25, 0, 33, 24, 1, 32, 25, 0, 32, 24, 1, 33, 24, 1, 32, 25, 0, 33, 25, 0, 32, 24, 1, 31, 25, 0, 31, 24, 1, 32, 24, 1, 31, 25, 0, 32, 25, 0, 31, 24, 1, 30, 25, 0, 30, 24, 1, 31, 24, 1, 30, 25, 0, 31, 25, 0, 30, 24, 1, 29, 25, 0, 29, 24, 1, 30, 24, 1, 29, 25, 0, 30, 25, 0, 29, 24, 1, 28, 25, 0, 28, 24, 1, 29, 24, 1, 28, 25, 0, 29, 25, 0, 28, 24, 1, 27, 25, 0, 27, 24, 1, 28, 24, 1, 27, 25, 0, 28, 25, 0, 27, 24, 1, 26, 25, 0, 26, 24, 1, 27, 24, 1, 26, 25, 0, 27, 24, 1, 22, 24, 0, 21, 25, 0, 21, 25, 0, 22, 24, 1, 22, 25, 0, 21, 25, 0, 26, 24, 1, 25, 25, 0, 25, 24, 1, 26, 24, 1, 25, 25, 0, 26, 25, 0, 25, 24, 1, 24, 25, 0, 24, 24, 1, 25, 24, 1, 24, 25, 0, 25, 25, 0, 24, 24, 1, 23, 25, 0, 23, 24, 1, 24, 24, 1, 23, 25, 0, 24, 25, 0, 23, 24, 1, 22, 25, 0, 22, 24, 1, 23, 24, 1, 22, 25, 0, 23, 19, 1, 18, 19, 0, 17, 19, 1, 17, 19, 0, 18, 19, 0, 17, 19, 1, 18, 19, 1, 19, 19, 0, 18, 19, 1, 18, 19, 0, 19, 19, 0, 18, 19, 1, 19, 19, 1, 20, 19, 0, 19, 19, 1, 19, 19, 0, 20, 19, 0, 19, 19, 1, 20, 19, 1, 17, 20, 0, 17, 20, 1, 17, 19, 0, 17, 20, 0, 17, 19, 1, 17, 20, 1, 17, 21, 0, 17, 21, 1, 17, 20, 0, 17, 21, 0, 17, 20, 1, 17, 21, 1, 17, 22, 0, 17, 22, 1, 17, 21, 0, 17, 22, 0, 17, 21, 1, 17, 22, 1, 19, 22, 0, 20, 22, 1, 20, 22, 0, 19, 22, 0, 20, 22, 1, 19, 22, 1, 18, 22, 0, 19, 22, 1, 19, 22, 0, 18, 22, 0, 19, 22, 1, 18, 22, 1, 17, 22, 0, 18, 22, 1, 18, 22, 0, 17, 22, 0, 18, 22, 1, 17, 22, 1, 20, 21, 0, 20, 21, 1, 20, 22, 0, 20, 21, 0, 20, 22, 1, 20, 21, 1, 20, 20, 0, 20, 20, 1, 20, 21, 0, 20, 20, 0, 20, 21, 1, 20, -11, 0, 36, -11, 0, 35, -10, 1, 35, -10, 0, 36, -11, 0, 36, -10, 1, 35) + [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_htlhh"] sky_top_color = Color(0.356863, 0.623529, 0.937255, 1) sky_horizon_color = Color(0.254902, 0.623529, 0.8, 1) @@ -32,6 +50,7 @@ background_mode = 2 sky = SubResource("Sky_j6hso") [node name="Island" type="Node3D"] +script = SubResource("GDScript_78lo3") [node name="Sea" type="MeshInstance3D" parent="."] mesh = SubResource("PlaneMesh_4ibso") @@ -39,8 +58,16 @@ mesh = SubResource("PlaneMesh_4ibso") [node name="Island" type="MeshInstance3D" parent="."] mesh = ExtResource("2_r00hx") +[node name="StaticBody3D" type="StaticBody3D" parent="Island"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Island/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_droeh") + [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_302o8") [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] transform = Transform3D(1, 0, 0, 0, -0.337161, 0.941447, 0, -0.941447, -0.337161, 0, 2.08989, 0) + +[node name="Player" parent="." instance=ExtResource("3_5378m")] +transform = Transform3D(-1, 3.48787e-16, -8.74228e-08, 3.48787e-16, 1, -3.48787e-16, 8.74228e-08, -3.48787e-16, -1, 0, 4.89631, 0) diff --git a/menu/Menu.tscn b/menu/Menu.tscn index c1c7841..fd0d3ac 100644 --- a/menu/Menu.tscn +++ b/menu/Menu.tscn @@ -15,7 +15,6 @@ size_flags_vertical = 3 theme = ExtResource("1_mkxnc") [node name="Panel" type="TextureRect" parent="."] -layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -25,7 +24,6 @@ texture = ExtResource("2_q14jx") stretch_mode = 1 [node name="Content" type="VBoxContainer" parent="."] -layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -34,23 +32,29 @@ grow_vertical = 2 alignment = 1 [node name="Authors" type="Label" parent="Content"] -layout_mode = 2 +offset_right = 284.0 +offset_bottom = 18.0 text = "A game by Ichicoro and Steffo" horizontal_alignment = 1 [node name="Title" type="Label" parent="Content"] -layout_mode = 2 +offset_top = 25.0 +offset_right = 284.0 +offset_bottom = 75.0 size_flags_vertical = 6 theme_override_font_sizes/font_size = 48 text = "Harvest" horizontal_alignment = 1 [node name="Control" type="Control" parent="Content"] -layout_mode = 2 +layout_mode = 3 +anchors_preset = 0 +offset_top = 110.0 +offset_right = 284.0 +offset_bottom = 110.0 size_flags_vertical = 6 [node name="Play" type="Button" parent="Content/Control"] -layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 @@ -68,7 +72,9 @@ theme_override_font_sizes/font_size = 0 text = "Play" [node name="Authors2" type="Label" parent="Content"] -layout_mode = 2 +offset_top = 142.0 +offset_right = 284.0 +offset_bottom = 160.0 size_flags_vertical = 1 text = "Ludum Dare 52 - Harvest" horizontal_alignment = 1 diff --git a/player/BaseWeapon.gd b/player/BaseWeapon.gd new file mode 100644 index 0000000..0fe5a39 --- /dev/null +++ b/player/BaseWeapon.gd @@ -0,0 +1,32 @@ +extends Node +class_name BaseWeapon + +enum WeaponSlot { + ONE, + TWO, + THREE +} + +@export_range(0,1) var MOUSE_MOVEMENT_BOB_AMOUNT := 0.5 + +var player: Player +var weaponSlot: WeaponSlot = WeaponSlot.ONE +var mouse_movement := Vector2.ZERO + +func on_switch_in(): + pass + +func on_switch_out(): + pass + +func bob_weapon(node: Node3D, delta: float): + node.position = Vector3.ZERO.lerp(Vector3( + 0, + self.mouse_movement.x*0.05, + -self.mouse_movement.y*0.05, + ), delta / MOUSE_MOVEMENT_BOB_AMOUNT) + +func _input(event: InputEvent) -> void: + if event is InputEventMouseMotion: + var vec = event.relative + self.mouse_movement = Vector2(vec.y, vec.x) diff --git a/player/Head.gd b/player/Head.gd new file mode 100644 index 0000000..31c78fb --- /dev/null +++ b/player/Head.gd @@ -0,0 +1,32 @@ +extends Node3D + +var xNoise: FastNoiseLite +var yNoise: FastNoiseLite + +var targetRot := Vector3.ZERO +var eventRot := Vector2.ZERO +var noiseRot := Vector3.ZERO +var noiseCount := 0 +@export var noiseAmp := 10.0 +@export var noiseFreq := 100.0 + +var mouseRot := Vector2.ZERO + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + xNoise = FastNoiseLite.new() + yNoise = FastNoiseLite.new() + xNoise.seed = 0 + yNoise.seed = 1 + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + +func _physics_process(delta: float) -> void: + pass + + +func _input(event: InputEvent) -> void: + if event is InputEventMouseMotion: + mouseRot = event.relative diff --git a/player/OnHand.gd b/player/OnHand.gd new file mode 100644 index 0000000..18215e9 --- /dev/null +++ b/player/OnHand.gd @@ -0,0 +1,64 @@ +extends Node3D + +enum GUN_STATE { + ACTIVE, + SWITCHING, + INACTIVE +} + +var active_weapon: BaseWeapon + +signal weapon_switched(weapon: BaseWeapon) + +var player: Player: + get: + return player + set(p): + player = p + self._on_player_set(p) + + +var weapons: Array = [ + # load("res://Player/Weapons/Arm.tscn").instantiate(), + # load("res://Player/Weapons/ak47.tscn").instantiate(), +] + + +func _ready() -> void: + self._switch_weapon(BaseWeapon.WeaponSlot.THREE) + + +func _process(delta: float) -> void: + pass + + +func _on_player_set(player: Player) -> void: + for weapon in weapons: + weapon.player = player + + +func _input(event: InputEvent) -> void: + if Input.is_action_just_pressed("slot1"): + _switch_weapon(BaseWeapon.WeaponSlot.ONE) + elif Input.is_action_just_pressed("slot2"): + _switch_weapon(BaseWeapon.WeaponSlot.TWO) + elif Input.is_action_just_pressed("slot3"): + _switch_weapon(BaseWeapon.WeaponSlot.THREE) + + +func _switch_weapon(slot: BaseWeapon.WeaponSlot): + # TODO: play anim ecc ecc + # Try to get the correct weapon per the given `slot` + for weapon in weapons: + if weapon.weaponSlot == slot: + # Remove active weapon + if active_weapon: + await active_weapon.on_switch_out() + remove_child(active_weapon) + + # Add new weapon + add_child(weapon) + active_weapon = weapon + await active_weapon.on_switch_in() + emit_signal("weapon_switched", weapon) + break diff --git a/player/Player.tscn b/player/Player.tscn new file mode 100644 index 0000000..51374d9 --- /dev/null +++ b/player/Player.tscn @@ -0,0 +1,300 @@ +[gd_scene load_steps=17 format=3 uid="uid://dnrl0uycbw3lp"] + +[ext_resource type="Script" path="res://player/player.gd" id="1_rujcr"] +[ext_resource type="Script" path="res://Player/Head.gd" id="2_fs52a"] +[ext_resource type="Script" path="res://Player/OnHand.gd" id="3_au30p"] +[ext_resource type="Shader" path="res://Player/crosshair.gdshader" id="6_r7xbu"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_berhm"] + +[sub_resource type="BoxMesh" id="BoxMesh_7lbaj"] +material = SubResource("StandardMaterial3D_berhm") +size = Vector3(0.1, 0.1, 0.1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_aqp8x"] +metallic_specular = 0.0 + +[sub_resource type="CylinderMesh" id="CylinderMesh_h7ca4"] +material = SubResource("StandardMaterial3D_aqp8x") + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_otair"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vqko1"] +bg_color = Color(0.240234, 0.240234, 0.240234, 1) + +[sub_resource type="Theme" id="Theme_smyke"] +Panel/styles/panel = SubResource("StyleBoxFlat_vqko1") + +[sub_resource type="GDScript" id="GDScript_iiadi"] +resource_name = "FPS_Counter" +script/source = "extends Label + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + self.text = str(round(1/delta)) + \" FPS\" +" + +[sub_resource type="GDScript" id="GDScript_5d122"] +resource_name = "PointsSpawner" +script/source = "extends Control + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass + +func spawn_points_label(text: String, offset: Vector2): + var label = Label.new() + label.text = text + label.offset_bottom = -offset.y + label.offset_left = offset.x + self.add_child(label) + + var initialY = label.position.y + + var tween = get_tree().create_tween() + tween.set_speed_scale(2) + tween.parallel().tween_property(label, \"position:y\", initialY - 50, 1).as_relative().from_current().set_trans(Tween.EASE_OUT) + tween.parallel().tween_property(label, \"modulate\", Color.TRANSPARENT, 1).set_trans(Tween.EASE_OUT) + tween.tween_callback(label.queue_free) + tween.play() + +" + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_avmet"] +bg_color = Color(0, 0, 0, 0.647059) + +[sub_resource type="GDScript" id="GDScript_7qy62"] +script/source = "extends Camera3D + +@export var MainCamera: Camera3D + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + if not MainCamera: + return + + if MainCamera.global_position: + self.global_position = MainCamera.global_position + if MainCamera.global_rotation: + self.global_rotation = MainCamera.global_rotation +" + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_2p6rt"] +shader = ExtResource("6_r7xbu") +shader_parameter/center_enabled = false +shader_parameter/legs_enabled = true +shader_parameter/inverted = false +shader_parameter/color_id = null +shader_parameter/color_0 = null +shader_parameter/color_1 = null +shader_parameter/color_2 = null +shader_parameter/center_radius = 0.002 +shader_parameter/width = 0.001 +shader_parameter/len = 0.008 +shader_parameter/spacing = 0.006 +shader_parameter/spread = 0.902 + +[node name="Player" type="CharacterBody3D"] +slide_on_ceiling = false +floor_constant_speed = true +script = ExtResource("1_rujcr") + +[node name="Head" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.54, 0) +script = ExtResource("2_fs52a") + +[node name="Torch" type="SpotLight3D" parent="Head"] +visible = false +light_energy = 5.5 +light_indirect_energy = 2.0 +light_cull_mask = 4294967293 +shadow_enabled = true +spot_range = 28.8 +spot_angle = 23.1165 +spot_angle_attenuation = 0.466516 + +[node name="RayCast3D" type="RayCast3D" parent="Head"] +target_position = Vector3(0, 0, -1.4) + +[node name="OnHand" type="Node3D" parent="Head"] +transform = Transform3D(1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 0, 0, 0) +script = ExtResource("3_au30p") + +[node name="Viewport" type="Control" parent="Head"] +texture_filter = 1 +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="CameraViewportContainer" type="SubViewportContainer" parent="Head/Viewport"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +stretch = true + +[node name="GameViewport" type="SubViewport" parent="Head/Viewport/CameraViewportContainer"] +transparent_bg = true +handle_input_locally = false +size = Vector2i(284, 160) +render_target_update_mode = 4 + +[node name="Camera" type="Camera3D" parent="Head/Viewport/CameraViewportContainer/GameViewport"] +transform = Transform3D(1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 0, 0.54, 0) +current = true +fov = 80.0 +near = 0.001 + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Head/Viewport/CameraViewportContainer/GameViewport/Camera"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.13668e-07, 0, -2.3659) +visible = false +layers = 3 +mesh = SubResource("BoxMesh_7lbaj") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = SubResource("CylinderMesh_h7ca4") +skeleton = NodePath("../..") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("CylinderShape3D_otair") + +[node name="HUD" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = SubResource("Theme_smyke") + +[node name="FPS_Label" type="Label" parent="HUD"] +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -97.0 +offset_bottom = 32.0 +grow_horizontal = 0 +theme_override_font_sizes/font_size = 20 +text = "n/d FPS" +horizontal_alignment = 2 +script = SubResource("GDScript_iiadi") + +[node name="PointsSpawner" type="Control" parent="HUD"] +layout_mode = 3 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 +script = SubResource("GDScript_5d122") + +[node name="Speed_Label" type="Label" parent="HUD"] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -53.0 +offset_top = 36.0 +offset_right = 53.0 +offset_bottom = 71.0 +grow_horizontal = 2 +grow_vertical = 2 +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Panel" type="Panel" parent="HUD"] +visible = false +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -276.0 +offset_top = -122.0 +offset_right = -40.0 +offset_bottom = -40.0 +grow_horizontal = 0 +grow_vertical = 0 +theme_override_styles/panel = SubResource("StyleBoxFlat_avmet") + +[node name="ColorRect" type="ColorRect" parent="HUD/Panel"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 0.745098) + +[node name="BackBufferCopy2" type="BackBufferCopy" parent="HUD"] +position = Vector2(727, 447) +scale = Vector2(7.61, 4.89) +copy_mode = 2 + +[node name="SubViewportContainer" type="SubViewportContainer" parent="HUD"] +visible = false +show_behind_parent = true +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +stretch = true + +[node name="SubViewport" type="SubViewport" parent="HUD/SubViewportContainer"] +transparent_bg = true +handle_input_locally = false +size = Vector2i(284, 160) +render_target_update_mode = 0 + +[node name="WeaponCamera" type="Camera3D" parent="HUD/SubViewportContainer/SubViewport" node_paths=PackedStringArray("MainCamera")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.581502, 0) +cull_mask = 2 +near = 0.001 +script = SubResource("GDScript_7qy62") +MainCamera = NodePath("../../../../Head/Viewport/CameraViewportContainer/GameViewport/Camera") + +[node name="Crosshair" type="ColorRect" parent="HUD"] +material = SubResource("ShaderMaterial_2p6rt") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -5.0 +offset_bottom = -5.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="BackBufferCopy" type="BackBufferCopy" parent="HUD"] +y_sort_enabled = true +position = Vector2(721, 449) +scale = Vector2(7.21, 4.54) + +[node name="GameFilter" type="ColorRect" parent="HUD"] +visible = false +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +metadata/_edit_layout_mode = 1 + +[node name="RigidDynamicBody3D" type="RigidBody3D" parent="."] diff --git a/player/PlayerInputData.gd b/player/PlayerInputData.gd new file mode 100644 index 0000000..817ad52 --- /dev/null +++ b/player/PlayerInputData.gd @@ -0,0 +1,14 @@ +extends Object +class_name PlayerInputData + +var forward: float = 0 +var backwards: float = 0 +var right: float = 0 +var left: float = 0 + +var jump: bool = false +var use: bool = false +var crouch: bool = false + +var horizontal: float = 0 +var vertical: float = 0 diff --git a/player/crosshair.gdshader b/player/crosshair.gdshader new file mode 100644 index 0000000..62276f1 --- /dev/null +++ b/player/crosshair.gdshader @@ -0,0 +1,42 @@ +shader_type canvas_item; + +uniform bool center_enabled = true; +uniform bool legs_enabled = true; +uniform bool inverted = false; +uniform int color_id = 0; +uniform vec4 color_0 = vec4(0., 1, 0., 1.); +uniform vec4 color_1 = vec4(1., 0., 0., 1.); +uniform vec4 color_2 = vec4(0., 0., 1., 1.); +uniform float center_radius = .002; +uniform float width = .003; +uniform float len = .03; +uniform float spacing = .008; +uniform float spread = 1.; + + +void fragment(){ + + float a = SCREEN_PIXEL_SIZE.x / SCREEN_PIXEL_SIZE.y; + vec2 UVa = vec2(UV.x / a, UV.y); + vec2 center = vec2(.5 / a, .5); + + float point = step(distance(UVa, center), center_radius); + + float h = step(center.x - len - spacing*spread, UVa.x) - step(center.x - spacing*spread, UVa.x); + h += step(center.x + spacing*spread, UVa.x) - step(center.x + len + spacing*spread, UVa.x); + h *= step(center.y - width, UVa.y) - step(center.y + width, UVa.y); + + float v = step(center.y - len - spacing*spread, UVa.y) - step(center.y - spacing*spread, UVa.y); + v += step(center.y + spacing*spread, UVa.y) - step(center.y + len + spacing*spread, UVa.y); + v *= step(center.x - width, UVa.x) - step(center.x + width, UVa.x); + + float crosshair; + + crosshair = (h+v) * float(legs_enabled) + point * float(center_enabled); + + if(!inverted){ + COLOR = (color_0 * float(color_id == 0) + color_1 * float(color_id == 1) + color_2 * float(color_id == 2)) * crosshair; + }else{ + COLOR = vec4((cos(textureLod(SCREEN_TEXTURE, SCREEN_UV, 0.0).rgb * 3.1415926534) + 1.)/2., 1.) * crosshair; + } +} \ No newline at end of file diff --git a/player/player.gd b/player/player.gd new file mode 100644 index 0000000..af4890b --- /dev/null +++ b/player/player.gd @@ -0,0 +1,153 @@ +extends CharacterBody3D +class_name Player + +const SPEED = 5.0 +const JUMP_VELOCITY = 4.5 +const MOUSE_SENSITIVITY = 2.25 + +const MAX_AIR_WISH_SPEED = 20 +const AIR_ACCELERATE = 100 # Hu/39.97 + +@onready var head: Node3D = $Head +@onready var camera: Camera3D = head.get_node("Viewport/CameraViewportContainer/GameViewport/Camera") +@onready var vport: SubViewport = head.get_node("Viewport/CameraViewportContainer/GameViewport") +@onready var aim_raycast: RayCast3D = head.get_node("RayCast3D") +@onready var torch: SpotLight3D = head.get_node("Torch") + +@onready var OnHand = head.get_node("OnHand") +@onready var active_weapon: BaseWeapon: + get: return OnHand.active_weapon + +# DEBUG NODES +@onready var debug_speed_label = $HUD/Speed_Label + +var last_frame_input_data: PlayerInputData = PlayerInputData.new() +var input_data: PlayerInputData = PlayerInputData.new() + +var mouse_movement: Vector2 = Vector2.ZERO +var mouse_enabled: bool = true + +var last_ground_velocity: Vector2 = Vector2.ZERO + +# Get the gravity from the project settings to be synced with RigidDynamicBody nodes. +var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") + + +# ===== UTILS ===== +func _get_2d_velocity() -> Vector2: + return Vector2(velocity.x, velocity.z) + + +func _ready(): + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + OnHand.player = self +# vport.size = DisplayServer.window_get_size() + vport.size = Vector2(426, 240) +# for item in OnHand.get_children(): +# if item is BaseWeapon: +# item.player = self + +func _process(delta): + pass + +func _physics_process(delta): + last_frame_input_data = input_data + input_data = PlayerInputData.new() + + if mouse_movement: + self.rotate_y(self.mouse_movement.y * -1 * delta * MOUSE_SENSITIVITY) + var x_rotation = self.mouse_movement.x * -1 * delta * MOUSE_SENSITIVITY + head.rotation.x = clamp(head.rotation.x + x_rotation, deg_to_rad(-90), deg_to_rad(90)) + self.mouse_movement = Vector2.ZERO + + var jumping = false + + # Add the gravity. + if not is_on_floor(): + velocity.y -= gravity * delta + else: + last_ground_velocity = Vector2(velocity.x, velocity.z) + + # Handle Jump + if Input.is_action_pressed("jump") and is_on_floor(): + jumping = true + velocity.y = JUMP_VELOCITY + + # Get the input direction and handle the movement/deceleration. + var input_dir = Input.get_vector("left", "right", "forward", "backwards") + var based = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)) + var direction = based.normalized() + if is_on_floor() and not jumping: + if direction: + velocity.x = direction.x * SPEED + velocity.z = direction.z * SPEED + else: + velocity.x = move_toward(velocity.x, 0, SPEED) + velocity.z = move_toward(velocity.z, 0, SPEED) + else: + _air_accelerate(direction, based.length(), AIR_ACCELERATE, delta) + + + # Apply camera effects + var camera_yaw := 0 + var current_speed := _get_2d_velocity().length() + if is_on_floor() and current_speed > 0: + camera_yaw = -clamp(_get_2d_velocity().length() * input_dir.x, -25, 25) + else: + camera_yaw = 0 + + self.camera.global_transform = self.head.global_transform + +# camera.rotation.z = move_toward( +# 0, +# camera_yaw, +# delta +# ) * 2.5 + + debug_speed_label.text = "%0.2f" % current_speed + + move_and_slide() + + +func _air_accelerate(wish_dir: Vector3, wish_speed: float, airaccelerate: float, delta_time: float): + var addspeed: float = 0 + var accelspeed: float = 0 + var currentspeed: float = 0 + + if wish_speed > MAX_AIR_WISH_SPEED: + wish_speed = MAX_AIR_WISH_SPEED + + currentspeed = velocity.dot(wish_dir) + + addspeed = wish_speed - currentspeed + if addspeed <= 0: + return + + accelspeed = airaccelerate * delta_time * wish_speed + + if accelspeed > addspeed: + accelspeed = addspeed + + velocity += accelspeed * wish_dir + + +func wall_running() -> bool: + if is_on_wall_only(): + if Input.is_action_pressed("jump"): + var wall_normal := get_wall_normal() + var bas = transform.basis * velocity + velocity.y /= 2 + return true + return false + + +func _input(event): + if event is InputEventKey and event.keycode == KEY_ESCAPE: + get_tree().quit() + + if Input.is_action_just_pressed("toggle_torch"): + torch.visible = !torch.visible + + if event is InputEventMouseMotion: + var vec = event.relative + self.mouse_movement = Vector2(vec.y / 10, vec.x / 10) diff --git a/project.godot b/project.godot index b695500..e7140bb 100644 --- a/project.godot +++ b/project.godot @@ -8,6 +8,28 @@ config_version=5 +_global_script_classes=[{ +"base": "Node", +"class": &"BaseWeapon", +"language": &"GDScript", +"path": "res://player/BaseWeapon.gd" +}, { +"base": "CharacterBody3D", +"class": &"Player", +"language": &"GDScript", +"path": "res://player/player.gd" +}, { +"base": "Object", +"class": &"PlayerInputData", +"language": &"GDScript", +"path": "res://player/PlayerInputData.gd" +}] +_global_script_class_icons={ +"BaseWeapon": "", +"Player": "", +"PlayerInputData": "" +} + [application] config/name="LD52" @@ -20,13 +42,41 @@ config/icon="res://assets/icon.svg" window/size/viewport_width=284 window/size/viewport_height=160 +window/size/mode=2 window/stretch/mode="canvas_items" [gui] fonts/dynamic_fonts/use_oversampling=false +[input] + +forward={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"unicode":0,"echo":false,"script":null) +] +} +backwards={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"unicode":0,"echo":false,"script":null) +] +} +left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"unicode":0,"echo":false,"script":null) +] +} +right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"unicode":0,"echo":false,"script":null) +] +} +jump={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"unicode":0,"echo":false,"script":null) +] +} + [rendering] -renderer/rendering_method="gl_compatibility" environment/defaults/default_clear_color=Color(0.231373, 0.490196, 0.309804, 1)