From 43ea213f9b1d08dff20847625c2b0fa776d8e177 Mon Sep 17 00:00:00 2001 From: Tony Bark <35226681+tonytins@users.noreply.github.com> Date: Thu, 17 Jul 2025 01:49:18 -0400 Subject: [PATCH] =?UTF-8?q?First=20commit=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 4 + .gitattributes | 2 + .gitignore | 3 + LICENSE | 674 ++++++++++++ addons/popochiu/LICENSE | 21 + .../popochiu_canvas_editor_menu.gd | 332 ++++++ .../popochiu_canvas_editor_menu.gd.uid | 1 + .../popochiu_canvas_editor_menu.tscn | 65 ++ addons/popochiu/editor/config/config.gd | 291 ++++++ addons/popochiu/editor/config/config.gd.uid | 1 + .../popochiu/editor/config/editor_config.gd | 128 +++ .../editor/config/editor_config.gd.uid | 1 + .../editor/config/local_obj_config.gd | 70 ++ .../editor/config/local_obj_config.gd.uid | 1 + addons/popochiu/editor/config/result_codes.gd | 75 ++ .../editor/config/result_codes.gd.uid | 1 + .../factories/factory_base_popochiu_obj.gd | 237 +++++ .../factory_base_popochiu_obj.gd.uid | 1 + .../factory_base_popochiu_room_obj.gd | 98 ++ .../factory_base_popochiu_room_obj.gd.uid | 1 + .../factories/factory_popochiu_character.gd | 64 ++ .../factory_popochiu_character.gd.uid | 1 + .../factories/factory_popochiu_dialog.gd | 49 + .../factories/factory_popochiu_dialog.gd.uid | 1 + .../factories/factory_popochiu_hostspot.gd | 76 ++ .../factory_popochiu_hostspot.gd.uid | 1 + .../factory_popochiu_inventory_item.gd | 60 ++ .../factory_popochiu_inventory_item.gd.uid | 1 + .../factories/factory_popochiu_marker.gd | 44 + .../factories/factory_popochiu_marker.gd.uid | 1 + .../editor/factories/factory_popochiu_prop.gd | 86 ++ .../factories/factory_popochiu_prop.gd.uid | 1 + .../factories/factory_popochiu_region.gd | 71 ++ .../factories/factory_popochiu_region.gd.uid | 1 + .../editor/factories/factory_popochiu_room.gd | 63 ++ .../factories/factory_popochiu_room.gd.uid | 1 + .../factory_popochiu_walkable_area.gd | 94 ++ .../factory_popochiu_walkable_area.gd.uid | 1 + addons/popochiu/editor/gizmos/gizmo2d.gd | 274 +++++ addons/popochiu/editor/gizmos/gizmo2d.gd.uid | 1 + .../editor/gizmos/gizmo_clickable_plugin.gd | 278 +++++ .../gizmos/gizmo_clickable_plugin.gd.uid | 1 + addons/popochiu/editor/gizmos/plugin.cfg | 7 + .../editor/helpers/popochiu_editor_helper.gd | 323 ++++++ .../helpers/popochiu_editor_helper.gd.uid | 1 + .../helpers/popochiu_gui_templates_helper.gd | 359 +++++++ .../popochiu_gui_templates_helper.gd.uid | 1 + .../editor/helpers/popochiu_signal_bus.gd | 9 + .../editor/helpers/popochiu_signal_bus.gd.uid | 1 + .../importers/aseprite/animation_creator.gd | 390 +++++++ .../aseprite/animation_creator.gd.uid | 1 + .../importers/aseprite/aseprite_controller.gd | 249 +++++ .../aseprite/aseprite_controller.gd.uid | 1 + .../aseprite/docks/animation_tag_row.gd | 94 ++ .../aseprite/docks/animation_tag_row.gd.uid | 1 + .../aseprite/docks/animation_tag_row.tscn | 94 ++ .../docks/aseprite_importer_inspector_dock.gd | 429 ++++++++ .../aseprite_importer_inspector_dock.gd.uid | 1 + .../aseprite_importer_inspector_dock.tscn | 225 ++++ ...prite_importer_inspector_dock_character.gd | 55 + ...e_importer_inspector_dock_character.gd.uid | 1 + .../aseprite_importer_inspector_dock_room.gd | 117 +++ ...eprite_importer_inspector_dock_room.gd.uid | 1 + .../aseprite_importer_inspector_plugin.gd | 46 + .../aseprite_importer_inspector_plugin.gd.uid | 1 + .../inspector/audio_cue_inspector_plugin.gd | 52 + .../audio_cue_inspector_plugin.gd.uid | 1 + .../inspector/character_inspector_plugin.gd | 83 ++ .../character_inspector_plugin.gd.uid | 1 + .../editor/inspector/prop_inspector_plugin.gd | 63 ++ .../inspector/prop_inspector_plugin.gd.uid | 1 + .../editor/main_dock/popochiu_dock.gd | 117 +++ .../editor/main_dock/popochiu_dock.gd.uid | 1 + .../editor/main_dock/popochiu_dock.tscn | 100 ++ .../editor/main_dock/popochiu_filter.gd | 51 + .../editor/main_dock/popochiu_filter.gd.uid | 1 + .../popochiu_group/images/popochiu_group.svg | 13 + .../images/popochiu_group.svg.import | 37 + .../popochiu_group/popochiu_group.gd | 199 ++++ .../popochiu_group/popochiu_group.gd.uid | 1 + .../popochiu_group/popochiu_group.tscn | 91 ++ .../audio_row/popochiu_audio_row.gd | 237 +++++ .../audio_row/popochiu_audio_row.gd.uid | 1 + .../audio_row/popochiu_audio_row.tscn | 62 ++ .../popochiu_row/images/add_to_core.png | Bin 0 -> 154 bytes .../images/add_to_core.png.import | 34 + .../main_dock/popochiu_row/images/delete.png | Bin 0 -> 212 bytes .../popochiu_row/images/delete.png.import | 34 + .../main_dock/popochiu_row/images/open.png | Bin 0 -> 171 bytes .../popochiu_row/images/open.png.import | 34 + .../character_row/popochiu_character_row.gd | 79 ++ .../popochiu_character_row.gd.uid | 1 + .../dialog_row/popochiu_dialog_row.gd | 15 + .../dialog_row/popochiu_dialog_row.gd.uid | 1 + .../popochiu_inventory_item_row.gd | 78 ++ .../popochiu_inventory_item_row.gd.uid | 1 + .../object_row/popochiu_object_row.gd | 334 ++++++ .../object_row/popochiu_object_row.gd.uid | 1 + .../object_row/popochiu_object_row.tscn | 58 ++ .../popochiu_room_object_row.gd | 60 ++ .../popochiu_room_object_row.gd.uid | 1 + .../popochiu_room_object_row.tscn | 22 + .../object_row/room_row/popochiu_room_row.gd | 90 ++ .../room_row/popochiu_room_row.gd.uid | 1 + .../room_row/popochiu_room_row.tscn | 60 ++ .../main_dock/popochiu_row/popochiu_row.gd | 125 +++ .../popochiu_row/popochiu_row.gd.uid | 1 + .../main_dock/popochiu_row/popochiu_row.tscn | 76 ++ .../editor/main_dock/tab_audio/tab_audio.gd | 416 ++++++++ .../main_dock/tab_audio/tab_audio.gd.uid | 1 + .../editor/main_dock/tab_audio/tab_audio.tscn | 141 +++ .../create_popup_window.gd | 91 ++ .../create_popup_window.gd.uid | 1 + .../create_popup_window.tscn | 48 + .../editor/main_dock/tab_gui/tab_gui.gd | 234 +++++ .../editor/main_dock/tab_gui/tab_gui.gd.uid | 1 + .../editor/main_dock/tab_gui/tab_gui.tscn | 97 ++ .../editor/main_dock/tab_main/tab_main.gd | 208 ++++ .../editor/main_dock/tab_main/tab_main.gd.uid | 1 + .../editor/main_dock/tab_main/tab_main.tscn | 118 +++ .../editor/main_dock/tab_room/tab_room.gd | 405 ++++++++ .../editor/main_dock/tab_room/tab_room.gd.uid | 1 + .../editor/main_dock/tab_room/tab_room.tscn | 193 ++++ .../create_character/create_character.gd | 80 ++ .../create_character/create_character.gd.uid | 1 + .../create_character/create_character.tscn | 36 + .../create_dialog/create_dialog.gd | 46 + .../create_dialog/create_dialog.gd.uid | 1 + .../create_dialog/create_dialog.tscn | 13 + .../create_hotspot/create_hotspot.gd | 41 + .../create_hotspot/create_hotspot.gd.uid | 1 + .../create_hotspot/create_hotspot.tscn | 14 + .../create_inventory_item.gd | 48 + .../create_inventory_item.gd.uid | 1 + .../create_inventory_item.tscn | 14 + .../create_marker/create_marker.gd | 41 + .../create_marker/create_marker.gd.uid | 1 + .../create_marker/create_marker.tscn | 13 + .../popups/create_object/create_object.gd | 111 ++ .../popups/create_object/create_object.gd.uid | 1 + .../popups/create_object/create_object.tscn | 76 ++ .../create_object/create_prop/create_prop.gd | 70 ++ .../create_prop/create_prop.gd.uid | 1 + .../create_prop/create_prop.tscn | 32 + .../create_region/create_region.gd | 45 + .../create_region/create_region.gd.uid | 1 + .../create_region/create_region.tscn | 13 + .../create_object/create_room/create_room.gd | 80 ++ .../create_room/create_room.gd.uid | 1 + .../create_room/create_room.tscn | 38 + .../create_object/create_room_object.gd | 37 + .../create_object/create_room_object.gd.uid | 1 + .../create_walkable_area.gd | 41 + .../create_walkable_area.gd.uid | 1 + .../create_walkable_area.tscn | 14 + .../delete_confirmation.gd | 30 + .../delete_confirmation.gd.uid | 1 + .../delete_confirmation.tscn | 50 + .../popups/migrations_panel/migration_step.gd | 34 + .../migrations_panel/migration_step.gd.uid | 1 + .../migrations_panel/migration_step.tscn | 933 +++++++++++++++++ .../popups/migrations_panel/migration_tab.gd | 44 + .../migrations_panel/migration_tab.gd.uid | 1 + .../migrations_panel/migration_tab.tscn | 35 + .../migrations_panel/migrations_panel.gd | 50 + .../migrations_panel/migrations_panel.gd.uid | 1 + .../migrations_panel/migrations_panel.tscn | 36 + .../editor/popups/progress/progress.gd | 13 + .../editor/popups/progress/progress.gd.uid | 1 + .../editor/popups/progress/progress.tscn | 40 + .../popups/setup/gui_template_button.gd | 4 + .../popups/setup/gui_template_button.gd.uid | 1 + addons/popochiu/editor/popups/setup/setup.gd | 322 ++++++ .../popochiu/editor/popups/setup/setup.gd.uid | 1 + .../popochiu/editor/popups/setup/setup.tscn | 307 ++++++ .../engine/audio_manager/audio_cue.gd | 179 ++++ .../engine/audio_manager/audio_cue.gd.uid | 1 + .../audio_manager/audio_cue_container.gd | 2 + .../audio_manager/audio_cue_container.gd.uid | 1 + .../engine/audio_manager/audio_cue_music.gd | 23 + .../audio_manager/audio_cue_music.gd.uid | 1 + .../engine/audio_manager/audio_cue_sound.gd | 31 + .../audio_manager/audio_cue_sound.gd.uid | 1 + .../engine/audio_manager/audio_manager.gd | 403 +++++++ .../engine/audio_manager/audio_manager.gd.uid | 1 + .../engine/audio_manager/audio_manager.tscn | 34 + addons/popochiu/engine/cursor/cursor.gd | 168 +++ addons/popochiu/engine/cursor/cursor.gd.uid | 1 + addons/popochiu/engine/cursor/cursor.tscn | 211 ++++ .../engine/cursor/cursor_animations.tres | 211 ++++ .../popochiu/engine/cursor/sprites/cursor.png | Bin 0 -> 1191 bytes .../engine/cursor/sprites/cursor.png.import | 34 + .../helpers/popochiu_characters_helper.gd | 82 ++ .../helpers/popochiu_characters_helper.gd.uid | 1 + addons/popochiu/engine/interfaces/i_audio.gd | 44 + .../popochiu/engine/interfaces/i_audio.gd.uid | 1 + .../popochiu/engine/interfaces/i_character.gd | 176 ++++ .../engine/interfaces/i_character.gd.uid | 1 + addons/popochiu/engine/interfaces/i_dialog.gd | 158 +++ .../engine/interfaces/i_dialog.gd.uid | 1 + .../engine/interfaces/i_graphic_interface.gd | 167 +++ .../interfaces/i_graphic_interface.gd.uid | 1 + .../popochiu/engine/interfaces/i_inventory.gd | 203 ++++ .../engine/interfaces/i_inventory.gd.uid | 1 + addons/popochiu/engine/interfaces/i_room.gd | 354 +++++++ .../popochiu/engine/interfaces/i_room.gd.uid | 1 + .../objects/character/popochiu_character.gd | 979 ++++++++++++++++++ .../character/popochiu_character.gd.uid | 1 + .../objects/character/popochiu_character.tscn | 18 + .../character/popochiu_character_data.gd | 42 + .../character/popochiu_character_data.gd.uid | 1 + .../objects/clickable/popochiu_clickable.gd | 419 ++++++++ .../clickable/popochiu_clickable.gd.uid | 1 + .../engine/objects/dialog/popochiu_dialog.gd | 165 +++ .../objects/dialog/popochiu_dialog.gd.uid | 1 + .../objects/dialog/popochiu_dialog_option.gd | 67 ++ .../dialog/popochiu_dialog_option.gd.uid | 1 + .../gui/components/dialog_menu/dialog_menu.gd | 144 +++ .../components/dialog_menu/dialog_menu.gd.uid | 1 + .../components/dialog_menu/dialog_menu.tscn | 39 + .../dialog_menu_option/dialog_menu_option.gd | 92 ++ .../dialog_menu_option.gd.uid | 1 + .../dialog_menu_option.tscn | 40 + .../dialog_caption/dialog_caption.gd | 17 + .../dialog_caption/dialog_caption.gd.uid | 1 + .../dialog_caption/dialog_caption.tscn | 58 ++ .../dialog_overhead/dialog_overhead.gd | 47 + .../dialog_overhead/dialog_overhead.gd.uid | 1 + .../dialog_overhead/dialog_overhead.tscn | 47 + .../dialog_portrait/dialog_portrait.gd | 45 + .../dialog_portrait/dialog_portrait.gd.uid | 1 + .../dialog_portrait/dialog_portrait.tscn | 106 ++ .../gui/components/dialog_text/dialog_text.gd | 301 ++++++ .../components/dialog_text/dialog_text.gd.uid | 1 + .../components/dialog_text/dialog_text.tscn | 38 + .../dialog_text/images/ico_continue.png | Bin 0 -> 173 bytes .../images/ico_continue.png.import | 34 + .../gui/components/hover_text/hover_text.gd | 39 + .../components/hover_text/hover_text.gd.uid | 1 + .../gui/components/hover_text/hover_text.tscn | 29 + .../components/inventory_bar/inventory_bar.gd | 183 ++++ .../inventory_bar/inventory_bar.gd.uid | 1 + .../inventory_bar/inventory_bar.tscn | 27 + .../images/inventory_grid_down_button.png | Bin 0 -> 249 bytes .../inventory_grid_down_button.png.import | 34 + .../images/inventory_grid_up_button.png | Bin 0 -> 246 bytes .../inventory_grid_up_button.png.import | 34 + .../inventory_grid/inventory_grid.gd | 226 ++++ .../inventory_grid/inventory_grid.gd.uid | 1 + .../inventory_grid/inventory_grid.tscn | 91 ++ .../inventory_grid/inventory_grid_slot.tscn | 17 + .../confirmation_popup/confirmation_popup.gd | 25 + .../confirmation_popup.gd.uid | 1 + .../confirmation_popup.tscn | 82 ++ .../history_popup/components/dialog_line.tscn | 13 + .../components/interaction_line.tscn | 13 + .../popups/history_popup/history_popup.gd | 57 + .../popups/history_popup/history_popup.gd.uid | 1 + .../popups/history_popup/history_popup.tscn | 115 ++ .../gui/components/popups/popochiu_popup.gd | 139 +++ .../components/popups/popochiu_popup.gd.uid | 1 + .../gui/components/popups/popochiu_popup.tscn | 69 ++ .../popochiu_popup_panel_container.tres | 12 + .../popups/quit_popup/quit_popup.gd | 26 + .../popups/quit_popup/quit_popup.gd.uid | 1 + .../popups/quit_popup/quit_popup.tscn | 84 ++ .../save_and_load_popup.gd | 134 +++ .../save_and_load_popup.gd.uid | 1 + .../save_and_load_popup.tscn | 100 ++ .../sound_settings_popup.gd | 16 + .../sound_settings_popup.gd.uid | 1 + .../sound_settings_popup.tscn | 80 ++ .../text_settings_popup.gd | 40 + .../text_settings_popup.gd.uid | 1 + .../text_settings_popup.tscn | 151 +++ .../settings_bar/buttons/btn_load.gd | 15 + .../settings_bar/buttons/btn_load.gd.uid | 1 + .../settings_bar/buttons/btn_quit.gd | 11 + .../settings_bar/buttons/btn_quit.gd.uid | 1 + .../buttons/settings_bar_button.gd | 32 + .../buttons/settings_bar_button.gd.uid | 1 + .../settings_bar/images/btn_audio.png | Bin 0 -> 259 bytes .../settings_bar/images/btn_audio.png.import | 34 + .../images/btn_dialog_history.png | Bin 0 -> 247 bytes .../images/btn_dialog_history.png.import | 34 + .../settings_bar/images/btn_load.png | Bin 0 -> 250 bytes .../settings_bar/images/btn_load.png.import | 34 + .../settings_bar/images/btn_quit.png | Bin 0 -> 314 bytes .../settings_bar/images/btn_quit.png.import | 34 + .../settings_bar/images/btn_save.png | Bin 0 -> 256 bytes .../settings_bar/images/btn_save.png.import | 34 + .../settings_bar/images/btn_text.png | Bin 0 -> 406 bytes .../settings_bar/images/btn_text.png.import | 34 + .../resources/text_speed_option.gd | 5 + .../resources/text_speed_option.gd.uid | 1 + .../components/settings_bar/settings_bar.gd | 143 +++ .../settings_bar/settings_bar.gd.uid | 1 + .../components/settings_bar/settings_bar.tscn | 168 +++ .../components/sound_volumes/sound_volumes.gd | 73 ++ .../sound_volumes/sound_volumes.gd.uid | 1 + .../sound_volumes/sound_volumes.tscn | 19 + .../gui/components/system_text/system_text.gd | 81 ++ .../components/system_text/system_text.gd.uid | 1 + .../components/system_text/system_text.tscn | 43 + .../objects/gui/fonts/minecraftia-regular.ttf | Bin 0 -> 70324 bytes .../gui/fonts/minecraftia-regular.ttf.import | 34 + .../objects/gui/fonts/monkeyisland_1991.ttf | Bin 0 -> 32092 bytes .../gui/fonts/monkeyisland_1991.ttf.import | 40 + .../engine/objects/gui/popochiu_commands.gd | 25 + .../objects/gui/popochiu_commands.gd.uid | 1 + .../engine/objects/gui/popochiu_gui.gd | 202 ++++ .../engine/objects/gui/popochiu_gui.gd.uid | 1 + .../engine/objects/gui/popochiu_gui.tscn | 15 + .../objects/gui/resources/base_gui_theme.tres | 88 ++ .../resources/images/check_button_checked.png | Bin 0 -> 169 bytes .../images/check_button_checked.png.import | 34 + .../images/check_button_unchecked.png | Bin 0 -> 126 bytes .../images/check_button_unchecked.png.import | 34 + .../objects/gui/resources/images/close.png | Bin 0 -> 128 bytes .../gui/resources/images/close.png.import | 34 + .../gui/resources/images/close_highlight.png | Bin 0 -> 128 bytes .../images/close_highlight.png.import | 34 + .../gui/resources/images/down_arrow.png | Bin 0 -> 153 bytes .../resources/images/down_arrow.png.import | 34 + .../objects/gui/resources/images/grabber.png | Bin 0 -> 92 bytes .../gui/resources/images/grabber.png.import | 34 + .../gui/templates/9_verb/9_verb_commands.gd | 166 +++ .../templates/9_verb/9_verb_commands.gd.uid | 1 + .../gui/templates/9_verb/9_verb_gui.gd | 258 +++++ .../gui/templates/9_verb/9_verb_gui.gd.uid | 1 + .../gui/templates/9_verb/9_verb_gui.tscn | 159 +++ .../gui/templates/9_verb/9_verb_gui_info.tres | 15 + .../9_verb_hover_text/9_verb_hover_text.gd | 86 ++ .../9_verb_hover_text.gd.uid | 1 + .../9_verb_inventory_grid.gd | 22 + .../9_verb_inventory_grid.gd.uid | 1 + .../9_verb_inventory_grid.tscn | 132 +++ .../9_verb_inventory_slot.tscn | 11 + .../images/9verb_inventory_down.png | Bin 0 -> 321 bytes .../images/9verb_inventory_down.png.import | 34 + .../images/9verb_inventory_up.png | Bin 0 -> 306 bytes .../images/9verb_inventory_up.png.import | 34 + .../components/9_verb_panel/9_verb_panel.gd | 23 + .../9_verb_panel/9_verb_panel.gd.uid | 1 + .../components/9_verb_panel/9_verb_panel.tscn | 177 ++++ .../9_verb_command_button.gd | 19 + .../9_verb_command_button.gd.uid | 1 + .../9_verb_commands_container.gd | 28 + .../9_verb_commands_container.gd.uid | 1 + .../quit_popup/9_verb_quit_popup.tscn | 6 + .../settings_popup/9_verb_settings_popup.gd | 43 + .../9_verb_settings_popup.gd.uid | 1 + .../settings_popup/9_verb_settings_popup.tscn | 120 +++ .../templates/9_verb/images/9verb_cursor.png | Bin 0 -> 541 bytes .../9_verb/images/9verb_cursor.png.import | 34 + .../9_verb/images/9verb_ico_settings.png | Bin 0 -> 253 bytes .../images/9verb_ico_settings.png.import | 34 + .../9_verb/resources/9_verb_button_group.tres | 5 + .../components/sierra_bar/sierra_bar.gd | 37 + .../components/sierra_bar/sierra_bar.gd.uid | 1 + .../components/sierra_bar/sierra_bar.tscn | 42 + .../sierra_command_button.gd | 19 + .../sierra_command_button.gd.uid | 1 + .../images/btn_down.png | Bin 0 -> 321 bytes .../images/btn_down.png.import | 34 + .../sierra_inventory_popup/images/btn_up.png | Bin 0 -> 306 bytes .../images/btn_up.png.import | 34 + .../sierra_inventory_button_group.tres | 4 + .../sierra_inventory_grid.tscn | 98 ++ .../sierra_inventory_popup.gd | 67 ++ .../sierra_inventory_popup.gd.uid | 1 + .../sierra_inventory_popup.tscn | 195 ++++ .../sierra_inventory_slot.gd | 76 ++ .../sierra_inventory_slot.gd.uid | 1 + .../sierra_inventory_slot.tscn | 18 + .../sierra_menu/sierra_commands_container.gd | 20 + .../sierra_commands_container.gd.uid | 1 + .../components/sierra_menu/sierra_menu.gd | 78 ++ .../components/sierra_menu/sierra_menu.gd.uid | 1 + .../components/sierra_menu/sierra_menu.tscn | 204 ++++ .../sierra_settings_popup.gd | 42 + .../sierra_settings_popup.gd.uid | 1 + .../sierra_settings_popup.tscn | 111 ++ .../sound_popup/sierra_sound_popup.tscn | 81 ++ .../gui/templates/sierra/images/btn_help.png | Bin 0 -> 183 bytes .../sierra/images/btn_help.png.import | 34 + .../templates/sierra/images/btn_interact.png | Bin 0 -> 344 bytes .../sierra/images/btn_interact.png.import | 34 + .../templates/sierra/images/btn_inventory.png | Bin 0 -> 269 bytes .../sierra/images/btn_inventory.png.import | 34 + .../gui/templates/sierra/images/btn_look.png | Bin 0 -> 399 bytes .../sierra/images/btn_look.png.import | 34 + .../gui/templates/sierra/images/btn_quit.png | Bin 0 -> 314 bytes .../sierra/images/btn_quit.png.import | 34 + .../templates/sierra/images/btn_select.png | Bin 0 -> 224 bytes .../sierra/images/btn_select.png.import | 34 + .../templates/sierra/images/btn_settings.png | Bin 0 -> 316 bytes .../sierra/images/btn_settings.png.import | 34 + .../gui/templates/sierra/images/btn_talk.png | Bin 0 -> 283 bytes .../sierra/images/btn_talk.png.import | 34 + .../gui/templates/sierra/images/btn_walk.png | Bin 0 -> 288 bytes .../sierra/images/btn_walk.png.import | 34 + .../templates/sierra/images/sierra_cursor.png | Bin 0 -> 646 bytes .../sierra/images/sierra_cursor.png.import | 34 + .../gui/templates/sierra/sierra_commands.gd | 93 ++ .../templates/sierra/sierra_commands.gd.uid | 1 + .../gui/templates/sierra/sierra_gui.gd | 178 ++++ .../gui/templates/sierra/sierra_gui.gd.uid | 1 + .../gui/templates/sierra/sierra_gui.tscn | 178 ++++ .../gui/templates/sierra/sierra_gui_info.tres | 15 + .../images/simple_click_cursor.png | Bin 0 -> 1230 bytes .../images/simple_click_cursor.png.import | 34 + .../simple_click/simple_click_commands.gd | 60 ++ .../simple_click/simple_click_commands.gd.uid | 1 + .../simple_click/simple_click_gui.gd | 212 ++++ .../simple_click/simple_click_gui.gd.uid | 1 + .../simple_click/simple_click_gui.tscn | 299 ++++++ .../simple_click/simple_click_gui_info.tres | 15 + .../objects/hotspot/popochiu_hotspot.gd | 20 + .../objects/hotspot/popochiu_hotspot.gd.uid | 1 + .../objects/hotspot/popochiu_hotspot.tscn | 13 + .../inventory_item/popochiu_inventory_item.gd | 369 +++++++ .../popochiu_inventory_item.gd.uid | 1 + .../popochiu_inventory_item.tscn | 11 + .../popochiu_inventory_item_data.gd | 42 + .../popochiu_inventory_item_data.gd.uid | 1 + .../engine/objects/popochiu_main_camera.gd | 123 +++ .../objects/popochiu_main_camera.gd.uid | 1 + .../engine/objects/popochiu_settings.gd | 106 ++ .../engine/objects/popochiu_settings.gd.uid | 1 + .../engine/objects/prop/popochiu_prop.gd | 265 +++++ .../engine/objects/prop/popochiu_prop.gd.uid | 1 + .../engine/objects/prop/popochiu_prop.tscn | 17 + .../engine/objects/region/popochiu_region.gd | 181 ++++ .../objects/region/popochiu_region.gd.uid | 1 + .../objects/region/popochiu_region.tscn | 13 + .../engine/objects/room/popochiu_room.gd | 533 ++++++++++ .../engine/objects/room/popochiu_room.gd.uid | 1 + .../engine/objects/room/popochiu_room.tscn | 19 + .../engine/objects/room/popochiu_room_data.gd | 188 ++++ .../objects/room/popochiu_room_data.gd.uid | 1 + .../transition_layer/images/bg.png.import | 34 + .../transition_layer/transition_layer.gd | 120 +++ .../transition_layer/transition_layer.gd.uid | 1 + .../transition_layer/transition_layer.tscn | 139 +++ .../walkable_area/popochiu_walkable_area.gd | 141 +++ .../popochiu_walkable_area.gd.uid | 1 + .../walkable_area/popochiu_walkable_area.tscn | 10 + .../engine/others/importer_defaults.gd | 21 + .../engine/others/importer_defaults.gd.uid | 1 + .../popochiu/engine/others/input_actions.gd | 17 + .../engine/others/input_actions.gd.uid | 1 + .../engine/others/popochiu_gui_info.gd | 6 + .../engine/others/popochiu_gui_info.gd.uid | 1 + .../engine/others/popochiu_save_load.gd | 228 ++++ .../engine/others/popochiu_save_load.gd.uid | 1 + .../popochiu/engine/others/popochiu_utils.gd | 220 ++++ .../engine/others/popochiu_utils.gd.uid | 1 + addons/popochiu/engine/popochiu.gd | 667 ++++++++++++ addons/popochiu/engine/popochiu.gd.uid | 1 + addons/popochiu/engine/popochiu.tscn | 24 + .../templates/character_state_template.gd | 23 + .../templates/character_state_template.gd.uid | 1 + .../engine/templates/character_template.gd | 95 ++ .../templates/character_template.gd.uid | 1 + .../engine/templates/dialog_template.gd | 44 + .../engine/templates/dialog_template.gd.uid | 1 + .../engine/templates/empty_script_template.gd | 8 + .../templates/empty_script_template.gd.uid | 1 + .../templates/gui/9_verb_commands_template.gd | 79 ++ .../gui/9_verb_commands_template.gd.uid | 1 + .../templates/gui/custom_commands_template.gd | 34 + .../gui/custom_commands_template.gd.uid | 1 + .../engine/templates/gui/gui_template.gd | 89 ++ .../engine/templates/gui/gui_template.gd.uid | 1 + .../engine/templates/gui/popup_template.gd | 26 + .../templates/gui/popup_template.gd.uid | 1 + .../templates/gui/sierra_commands_template.gd | 40 + .../gui/sierra_commands_template.gd.uid | 1 + .../gui/simple_click_commands_template.gd | 29 + .../gui/simple_click_commands_template.gd.uid | 1 + .../engine/templates/hotspot_template.gd | 62 ++ .../engine/templates/hotspot_template.gd.uid | 1 + .../inventory_item_state_template.gd | 23 + .../inventory_item_state_template.gd.uid | 1 + .../templates/inventory_item_template.gd | 51 + .../templates/inventory_item_template.gd.uid | 1 + .../engine/templates/prop_template.gd | 72 ++ .../engine/templates/prop_template.gd.uid | 1 + .../engine/templates/region_template.gd | 17 + .../engine/templates/region_template.gd.uid | 1 + .../engine/templates/room_state_template.gd | 23 + .../templates/room_state_template.gd.uid | 1 + .../engine/templates/room_template.gd | 30 + .../engine/templates/room_template.gd.uid | 1 + .../templates/walkable_area_template.gd | 6 + .../templates/walkable_area_template.gd.uid | 1 + addons/popochiu/icons/btn_baseline.svg | 1 + addons/popochiu/icons/btn_baseline.svg.import | 37 + addons/popochiu/icons/btn_dialog_position.svg | 1 + .../icons/btn_dialog_position.svg.import | 37 + .../icons/btn_interaction_polygon.svg | 1 + .../icons/btn_interaction_polygon.svg.import | 37 + addons/popochiu/icons/btn_look_at_point.svg | 1 + .../icons/btn_look_at_point.svg.import | 37 + addons/popochiu/icons/btn_walk_to_point.svg | 1 + .../icons/btn_walk_to_point.svg.import | 37 + addons/popochiu/icons/character.png | Bin 0 -> 267 bytes addons/popochiu/icons/character.png.import | 34 + addons/popochiu/icons/dialog.png | Bin 0 -> 317 bytes addons/popochiu/icons/dialog.png.import | 34 + addons/popochiu/icons/hotspot.png | Bin 0 -> 210 bytes addons/popochiu/icons/hotspot.png.import | 34 + addons/popochiu/icons/ico_9verb.png | Bin 0 -> 448 bytes addons/popochiu/icons/ico_9verb.png.import | 34 + addons/popochiu/icons/ico_custom.png | Bin 0 -> 424 bytes addons/popochiu/icons/ico_custom.png.import | 34 + addons/popochiu/icons/ico_sierra.png | Bin 0 -> 344 bytes addons/popochiu/icons/ico_sierra.png.import | 34 + addons/popochiu/icons/ico_simple_click.png | Bin 0 -> 321 bytes .../icons/ico_simple_click.png.import | 34 + addons/popochiu/icons/inventory_item.png | Bin 0 -> 270 bytes .../popochiu/icons/inventory_item.png.import | 34 + .../popochiu/icons/inventory_item_start.png | Bin 0 -> 392 bytes .../icons/inventory_item_start.png.import | 34 + addons/popochiu/icons/music.png | Bin 0 -> 155 bytes addons/popochiu/icons/music.png.import | 34 + addons/popochiu/icons/player_character.png | Bin 0 -> 162 bytes .../icons/player_character.png.import | 34 + addons/popochiu/icons/point.png | Bin 0 -> 207 bytes addons/popochiu/icons/point.png.import | 34 + addons/popochiu/icons/prop.png | Bin 0 -> 271 bytes addons/popochiu/icons/prop.png.import | 34 + addons/popochiu/icons/region.png | Bin 0 -> 234 bytes addons/popochiu/icons/region.png.import | 34 + addons/popochiu/icons/room.png | Bin 0 -> 259 bytes addons/popochiu/icons/room.png.import | 34 + addons/popochiu/icons/sfx.png | Bin 0 -> 264 bytes addons/popochiu/icons/sfx.png.import | 34 + addons/popochiu/icons/ui.png | Bin 0 -> 181 bytes addons/popochiu/icons/ui.png.import | 34 + addons/popochiu/icons/voice.png | Bin 0 -> 204 bytes addons/popochiu/icons/voice.png.import | 34 + addons/popochiu/icons/walkable_area.png | Bin 0 -> 207 bytes .../popochiu/icons/walkable_area.png.import | 34 + .../helpers/popochiu_migration_helper.gd | 208 ++++ .../helpers/popochiu_migration_helper.gd.uid | 1 + .../migration/migration/popochiu_migration.gd | 128 +++ .../migration/popochiu_migration.gd.uid | 1 + .../migration/popochiu_migration_template.gd | 39 + .../popochiu_migration_template.gd.uid | 1 + .../migrations/popochiu_migration_1.gd | 449 ++++++++ .../migrations/popochiu_migration_1.gd.uid | 1 + .../migrations/popochiu_migration_2.gd | 671 ++++++++++++ .../migrations/popochiu_migration_2.gd.uid | 1 + .../migrations/popochiu_migration_3.gd | 71 ++ .../migrations/popochiu_migration_3.gd.uid | 1 + .../popochiu/migration/migrations_manager.gd | 99 ++ .../migration/migrations_manager.gd.uid | 1 + addons/popochiu/palette/colodore.gpl | 20 + addons/popochiu/plugin.cfg | 8 + addons/popochiu/popochiu_export_plugin.gd | 70 ++ addons/popochiu/popochiu_export_plugin.gd.uid | 1 + addons/popochiu/popochiu_plugin.gd | 192 ++++ addons/popochiu/popochiu_plugin.gd.uid | 1 + addons/popochiu/popochiu_resources.gd | 538 ++++++++++ addons/popochiu/popochiu_resources.gd.uid | 1 + assets/pixel-max-bottomless.png | Bin 0 -> 2092 bytes assets/pixel-max-bottomless.png.import | 34 + assets/pixel-max.png | Bin 0 -> 2068 bytes assets/pixel-max.png.import | 34 + game/autoloads/a.gd | 6 + game/autoloads/a.gd.uid | 1 + game/autoloads/c.gd | 15 + game/autoloads/c.gd.uid | 1 + game/autoloads/d.gd | 12 + game/autoloads/d.gd.uid | 1 + game/autoloads/i.gd | 12 + game/autoloads/i.gd.uid | 1 + game/autoloads/r.gd | 15 + game/autoloads/r.gd.uid | 1 + .../max_casey/character_max_casey.gd | 94 ++ .../max_casey/character_max_casey.gd.uid | 1 + .../max_casey/character_max_casey.tres | 9 + .../max_casey/character_max_casey.tscn | 27 + .../max_casey/character_max_casey_state.gd | 23 + .../character_max_casey_state.gd.uid | 1 + .../gui/components/dialog_menu/dialog_menu.gd | 144 +++ .../components/dialog_menu/dialog_menu.gd.uid | 1 + .../components/dialog_menu/dialog_menu.tscn | 39 + .../dialog_menu/dialog_menu_custom.gd | 1 + .../dialog_menu/dialog_menu_custom.gd.uid | 1 + .../dialog_menu_option/dialog_menu_option.gd | 92 ++ .../dialog_menu_option.gd.uid | 1 + .../dialog_menu_option.tscn | 40 + .../dialog_menu_option_custom.gd | 1 + .../dialog_menu_option_custom.gd.uid | 1 + .../dialog_portrait/dialog_portrait.gd | 45 + .../dialog_portrait/dialog_portrait.gd.uid | 1 + .../dialog_portrait/dialog_portrait.tscn | 106 ++ .../dialog_portrait/dialog_portrait_custom.gd | 1 + .../dialog_portrait_custom.gd.uid | 1 + .../dialog_text/images/ico_continue.png | Bin 0 -> 173 bytes .../images/ico_continue.png.import | 34 + game/gui/components/hover_text/hover_text.gd | 39 + .../components/hover_text/hover_text.gd.uid | 1 + .../gui/components/hover_text/hover_text.tscn | 29 + .../hover_text/hover_text_custom.gd | 1 + .../hover_text/hover_text_custom.gd.uid | 1 + .../inventory_grid/inventory_grid.gd | 226 ++++ .../inventory_grid/inventory_grid.gd.uid | 1 + .../inventory_grid/inventory_grid_custom.gd | 2 + .../inventory_grid_custom.gd.uid | 1 + game/gui/components/popups/popochiu_popup.gd | 139 +++ .../components/popups/popochiu_popup.gd.uid | 1 + .../popups/popochiu_popup_custom.gd | 2 + .../popups/popochiu_popup_custom.gd.uid | 1 + .../popochiu_popup_panel_container.tres | 12 + .../popups/quit_popup/quit_popup.gd | 26 + .../popups/quit_popup/quit_popup.gd.uid | 1 + .../popups/quit_popup/quit_popup.tscn | 84 ++ .../popups/quit_popup/quit_popup_custom.gd | 2 + .../quit_popup/quit_popup_custom.gd.uid | 1 + .../save_and_load_popup.gd | 134 +++ .../save_and_load_popup.gd.uid | 1 + .../save_and_load_popup.tscn | 100 ++ .../save_and_load_popup_custom.gd | 2 + .../save_and_load_popup_custom.gd.uid | 1 + .../text_settings_popup.gd | 40 + .../text_settings_popup.gd.uid | 1 + .../text_settings_popup.tscn | 151 +++ .../text_settings_popup_custom.gd | 2 + .../text_settings_popup_custom.gd.uid | 1 + game/gui/components/sierra_bar/sierra_bar.gd | 37 + .../components/sierra_bar/sierra_bar.gd.uid | 1 + .../gui/components/sierra_bar/sierra_bar.tscn | 42 + .../sierra_bar/sierra_bar_custom.gd | 1 + .../sierra_bar/sierra_bar_custom.gd.uid | 1 + .../sierra_command_button.gd | 19 + .../sierra_command_button.gd.uid | 1 + .../sierra_command_button_custom.gd | 1 + .../sierra_command_button_custom.gd.uid | 1 + .../images/btn_down.png | Bin 0 -> 321 bytes .../images/btn_down.png.import | 34 + .../sierra_inventory_popup/images/btn_up.png | Bin 0 -> 306 bytes .../images/btn_up.png.import | 34 + .../sierra_inventory_button_group.tres | 4 + .../sierra_inventory_grid.tscn | 98 ++ .../sierra_inventory_popup.gd | 67 ++ .../sierra_inventory_popup.gd.uid | 1 + .../sierra_inventory_popup.tscn | 195 ++++ .../sierra_inventory_popup_custom.gd | 2 + .../sierra_inventory_popup_custom.gd.uid | 1 + .../sierra_inventory_slot.gd | 76 ++ .../sierra_inventory_slot.gd.uid | 1 + .../sierra_inventory_slot.tscn | 18 + .../sierra_inventory_slot_custom.gd | 1 + .../sierra_inventory_slot_custom.gd.uid | 1 + .../sierra_menu/sierra_commands_container.gd | 20 + .../sierra_commands_container.gd.uid | 1 + .../sierra_commands_container_custom.gd | 1 + .../sierra_commands_container_custom.gd.uid | 1 + .../gui/components/sierra_menu/sierra_menu.gd | 78 ++ .../components/sierra_menu/sierra_menu.gd.uid | 1 + .../components/sierra_menu/sierra_menu.tscn | 204 ++++ .../sierra_menu/sierra_menu_custom.gd | 1 + .../sierra_menu/sierra_menu_custom.gd.uid | 1 + .../sierra_settings_popup.gd | 42 + .../sierra_settings_popup.gd.uid | 1 + .../sierra_settings_popup.tscn | 111 ++ .../sierra_settings_popup_custom.gd | 2 + .../sierra_settings_popup_custom.gd.uid | 1 + .../sound_popup/sierra_sound_popup.tscn | 81 ++ .../components/sound_volumes/sound_volumes.gd | 73 ++ .../sound_volumes/sound_volumes.gd.uid | 1 + .../sound_volumes/sound_volumes.tscn | 19 + .../sound_volumes/sound_volumes_custom.gd | 1 + .../sound_volumes/sound_volumes_custom.gd.uid | 1 + .../gui/components/system_text/system_text.gd | 81 ++ .../components/system_text/system_text.gd.uid | 1 + .../components/system_text/system_text.tscn | 43 + .../system_text/system_text_custom.gd | 1 + .../system_text/system_text_custom.gd.uid | 1 + game/gui/fonts/monkeyisland_1991.ttf | Bin 0 -> 32092 bytes game/gui/fonts/monkeyisland_1991.ttf.import | 34 + game/gui/gui.gd | 89 ++ game/gui/gui.gd.uid | 1 + game/gui/gui.tscn | 284 +++++ game/gui/gui_commands.gd | 40 + game/gui/gui_commands.gd.uid | 1 + game/gui/images/btn_help.png | Bin 0 -> 183 bytes game/gui/images/btn_help.png.import | 34 + game/gui/images/btn_interact.png | Bin 0 -> 344 bytes game/gui/images/btn_interact.png.import | 34 + game/gui/images/btn_inventory.png | Bin 0 -> 269 bytes game/gui/images/btn_inventory.png.import | 34 + game/gui/images/btn_look.png | Bin 0 -> 399 bytes game/gui/images/btn_look.png.import | 34 + game/gui/images/btn_quit.png | Bin 0 -> 314 bytes game/gui/images/btn_quit.png.import | 34 + game/gui/images/btn_settings.png | Bin 0 -> 316 bytes game/gui/images/btn_settings.png.import | 34 + game/gui/images/btn_talk.png | Bin 0 -> 283 bytes game/gui/images/btn_talk.png.import | 34 + game/gui/images/btn_walk.png | Bin 0 -> 288 bytes game/gui/images/btn_walk.png.import | 34 + game/gui/images/sierra_cursor.png | Bin 0 -> 646 bytes game/gui/images/sierra_cursor.png.import | 34 + game/gui/resources/gui_theme.tres | 108 ++ game/gui/resources/images/close.png | Bin 0 -> 128 bytes game/gui/resources/images/close.png.import | 34 + game/gui/resources/images/close_highlight.png | Bin 0 -> 128 bytes .../images/close_highlight.png.import | 34 + game/popochiu_data.cfg | 19 + game/popochiu_globals.gd | 1 + game/popochiu_globals.gd.uid | 1 + game/rooms/prototype/room_prototype.gd | 30 + game/rooms/prototype/room_prototype.gd.uid | 1 + game/rooms/prototype/room_prototype.tres | 12 + game/rooms/prototype/room_prototype.tscn | 26 + game/rooms/prototype/room_prototype_state.gd | 23 + .../prototype/room_prototype_state.gd.uid | 1 + .../floor/walkable_area_floor.gd | 6 + .../floor/walkable_area_floor.gd.uid | 1 + .../floor/walkable_area_floor.tscn | 21 + icon.svg | 1 + icon.svg.import | 37 + project.godot | 67 ++ 728 files changed, 37080 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 addons/popochiu/LICENSE create mode 100644 addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd create mode 100644 addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd.uid create mode 100644 addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.tscn create mode 100644 addons/popochiu/editor/config/config.gd create mode 100644 addons/popochiu/editor/config/config.gd.uid create mode 100644 addons/popochiu/editor/config/editor_config.gd create mode 100644 addons/popochiu/editor/config/editor_config.gd.uid create mode 100644 addons/popochiu/editor/config/local_obj_config.gd create mode 100644 addons/popochiu/editor/config/local_obj_config.gd.uid create mode 100644 addons/popochiu/editor/config/result_codes.gd create mode 100644 addons/popochiu/editor/config/result_codes.gd.uid create mode 100644 addons/popochiu/editor/factories/factory_base_popochiu_obj.gd create mode 100644 addons/popochiu/editor/factories/factory_base_popochiu_obj.gd.uid create mode 100644 addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd create mode 100644 addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd.uid create mode 100644 addons/popochiu/editor/factories/factory_popochiu_character.gd create mode 100644 addons/popochiu/editor/factories/factory_popochiu_character.gd.uid create mode 100644 addons/popochiu/editor/factories/factory_popochiu_dialog.gd create mode 100644 addons/popochiu/editor/factories/factory_popochiu_dialog.gd.uid create mode 100644 addons/popochiu/editor/factories/factory_popochiu_hostspot.gd create mode 100644 addons/popochiu/editor/factories/factory_popochiu_hostspot.gd.uid create mode 100644 addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd create mode 100644 addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd.uid create mode 100644 addons/popochiu/editor/factories/factory_popochiu_marker.gd create mode 100644 addons/popochiu/editor/factories/factory_popochiu_marker.gd.uid create mode 100644 addons/popochiu/editor/factories/factory_popochiu_prop.gd create mode 100644 addons/popochiu/editor/factories/factory_popochiu_prop.gd.uid create mode 100644 addons/popochiu/editor/factories/factory_popochiu_region.gd create mode 100644 addons/popochiu/editor/factories/factory_popochiu_region.gd.uid create mode 100644 addons/popochiu/editor/factories/factory_popochiu_room.gd create mode 100644 addons/popochiu/editor/factories/factory_popochiu_room.gd.uid create mode 100644 addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd create mode 100644 addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd.uid create mode 100644 addons/popochiu/editor/gizmos/gizmo2d.gd create mode 100644 addons/popochiu/editor/gizmos/gizmo2d.gd.uid create mode 100644 addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd create mode 100644 addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd.uid create mode 100644 addons/popochiu/editor/gizmos/plugin.cfg create mode 100644 addons/popochiu/editor/helpers/popochiu_editor_helper.gd create mode 100644 addons/popochiu/editor/helpers/popochiu_editor_helper.gd.uid create mode 100644 addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd create mode 100644 addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd.uid create mode 100644 addons/popochiu/editor/helpers/popochiu_signal_bus.gd create mode 100644 addons/popochiu/editor/helpers/popochiu_signal_bus.gd.uid create mode 100644 addons/popochiu/editor/importers/aseprite/animation_creator.gd create mode 100644 addons/popochiu/editor/importers/aseprite/animation_creator.gd.uid create mode 100644 addons/popochiu/editor/importers/aseprite/aseprite_controller.gd create mode 100644 addons/popochiu/editor/importers/aseprite/aseprite_controller.gd.uid create mode 100644 addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd create mode 100644 addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd.uid create mode 100644 addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn create mode 100644 addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd create mode 100644 addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd.uid create mode 100644 addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.tscn create mode 100644 addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd create mode 100644 addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd.uid create mode 100644 addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd create mode 100644 addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd.uid create mode 100644 addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd create mode 100644 addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd.uid create mode 100644 addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd create mode 100644 addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd.uid create mode 100644 addons/popochiu/editor/inspector/character_inspector_plugin.gd create mode 100644 addons/popochiu/editor/inspector/character_inspector_plugin.gd.uid create mode 100644 addons/popochiu/editor/inspector/prop_inspector_plugin.gd create mode 100644 addons/popochiu/editor/inspector/prop_inspector_plugin.gd.uid create mode 100644 addons/popochiu/editor/main_dock/popochiu_dock.gd create mode 100644 addons/popochiu/editor/main_dock/popochiu_dock.gd.uid create mode 100644 addons/popochiu/editor/main_dock/popochiu_dock.tscn create mode 100644 addons/popochiu/editor/main_dock/popochiu_filter.gd create mode 100644 addons/popochiu/editor/main_dock/popochiu_filter.gd.uid create mode 100644 addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg create mode 100644 addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg.import create mode 100644 addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd create mode 100644 addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd.uid create mode 100644 addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd.uid create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.tscn create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png.import create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/images/delete.png create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/images/delete.png.import create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/images/open.png create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/images/open.png.import create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd.uid create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd.uid create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd.uid create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd.uid create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd.uid create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.tscn create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd.uid create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.tscn create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd.uid create mode 100644 addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn create mode 100644 addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd create mode 100644 addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd.uid create mode 100644 addons/popochiu/editor/main_dock/tab_audio/tab_audio.tscn create mode 100644 addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd create mode 100644 addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd.uid create mode 100644 addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.tscn create mode 100644 addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd create mode 100644 addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd.uid create mode 100644 addons/popochiu/editor/main_dock/tab_gui/tab_gui.tscn create mode 100644 addons/popochiu/editor/main_dock/tab_main/tab_main.gd create mode 100644 addons/popochiu/editor/main_dock/tab_main/tab_main.gd.uid create mode 100644 addons/popochiu/editor/main_dock/tab_main/tab_main.tscn create mode 100644 addons/popochiu/editor/main_dock/tab_room/tab_room.gd create mode 100644 addons/popochiu/editor/main_dock/tab_room/tab_room.gd.uid create mode 100644 addons/popochiu/editor/main_dock/tab_room/tab_room.tscn create mode 100644 addons/popochiu/editor/popups/create_object/create_character/create_character.gd create mode 100644 addons/popochiu/editor/popups/create_object/create_character/create_character.gd.uid create mode 100644 addons/popochiu/editor/popups/create_object/create_character/create_character.tscn create mode 100644 addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd create mode 100644 addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd.uid create mode 100644 addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.tscn create mode 100644 addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd create mode 100644 addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd.uid create mode 100644 addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.tscn create mode 100644 addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd create mode 100644 addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd.uid create mode 100644 addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.tscn create mode 100644 addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd create mode 100644 addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd.uid create mode 100644 addons/popochiu/editor/popups/create_object/create_marker/create_marker.tscn create mode 100644 addons/popochiu/editor/popups/create_object/create_object.gd create mode 100644 addons/popochiu/editor/popups/create_object/create_object.gd.uid create mode 100644 addons/popochiu/editor/popups/create_object/create_object.tscn create mode 100644 addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd create mode 100644 addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd.uid create mode 100644 addons/popochiu/editor/popups/create_object/create_prop/create_prop.tscn create mode 100644 addons/popochiu/editor/popups/create_object/create_region/create_region.gd create mode 100644 addons/popochiu/editor/popups/create_object/create_region/create_region.gd.uid create mode 100644 addons/popochiu/editor/popups/create_object/create_region/create_region.tscn create mode 100644 addons/popochiu/editor/popups/create_object/create_room/create_room.gd create mode 100644 addons/popochiu/editor/popups/create_object/create_room/create_room.gd.uid create mode 100644 addons/popochiu/editor/popups/create_object/create_room/create_room.tscn create mode 100644 addons/popochiu/editor/popups/create_object/create_room_object.gd create mode 100644 addons/popochiu/editor/popups/create_object/create_room_object.gd.uid create mode 100644 addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd create mode 100644 addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd.uid create mode 100644 addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.tscn create mode 100644 addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd create mode 100644 addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd.uid create mode 100644 addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.tscn create mode 100644 addons/popochiu/editor/popups/migrations_panel/migration_step.gd create mode 100644 addons/popochiu/editor/popups/migrations_panel/migration_step.gd.uid create mode 100644 addons/popochiu/editor/popups/migrations_panel/migration_step.tscn create mode 100644 addons/popochiu/editor/popups/migrations_panel/migration_tab.gd create mode 100644 addons/popochiu/editor/popups/migrations_panel/migration_tab.gd.uid create mode 100644 addons/popochiu/editor/popups/migrations_panel/migration_tab.tscn create mode 100644 addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd create mode 100644 addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd.uid create mode 100644 addons/popochiu/editor/popups/migrations_panel/migrations_panel.tscn create mode 100644 addons/popochiu/editor/popups/progress/progress.gd create mode 100644 addons/popochiu/editor/popups/progress/progress.gd.uid create mode 100644 addons/popochiu/editor/popups/progress/progress.tscn create mode 100644 addons/popochiu/editor/popups/setup/gui_template_button.gd create mode 100644 addons/popochiu/editor/popups/setup/gui_template_button.gd.uid create mode 100644 addons/popochiu/editor/popups/setup/setup.gd create mode 100644 addons/popochiu/editor/popups/setup/setup.gd.uid create mode 100644 addons/popochiu/editor/popups/setup/setup.tscn create mode 100644 addons/popochiu/engine/audio_manager/audio_cue.gd create mode 100644 addons/popochiu/engine/audio_manager/audio_cue.gd.uid create mode 100644 addons/popochiu/engine/audio_manager/audio_cue_container.gd create mode 100644 addons/popochiu/engine/audio_manager/audio_cue_container.gd.uid create mode 100644 addons/popochiu/engine/audio_manager/audio_cue_music.gd create mode 100644 addons/popochiu/engine/audio_manager/audio_cue_music.gd.uid create mode 100644 addons/popochiu/engine/audio_manager/audio_cue_sound.gd create mode 100644 addons/popochiu/engine/audio_manager/audio_cue_sound.gd.uid create mode 100644 addons/popochiu/engine/audio_manager/audio_manager.gd create mode 100644 addons/popochiu/engine/audio_manager/audio_manager.gd.uid create mode 100644 addons/popochiu/engine/audio_manager/audio_manager.tscn create mode 100644 addons/popochiu/engine/cursor/cursor.gd create mode 100644 addons/popochiu/engine/cursor/cursor.gd.uid create mode 100644 addons/popochiu/engine/cursor/cursor.tscn create mode 100644 addons/popochiu/engine/cursor/cursor_animations.tres create mode 100644 addons/popochiu/engine/cursor/sprites/cursor.png create mode 100644 addons/popochiu/engine/cursor/sprites/cursor.png.import create mode 100644 addons/popochiu/engine/helpers/popochiu_characters_helper.gd create mode 100644 addons/popochiu/engine/helpers/popochiu_characters_helper.gd.uid create mode 100644 addons/popochiu/engine/interfaces/i_audio.gd create mode 100644 addons/popochiu/engine/interfaces/i_audio.gd.uid create mode 100644 addons/popochiu/engine/interfaces/i_character.gd create mode 100644 addons/popochiu/engine/interfaces/i_character.gd.uid create mode 100644 addons/popochiu/engine/interfaces/i_dialog.gd create mode 100644 addons/popochiu/engine/interfaces/i_dialog.gd.uid create mode 100644 addons/popochiu/engine/interfaces/i_graphic_interface.gd create mode 100644 addons/popochiu/engine/interfaces/i_graphic_interface.gd.uid create mode 100644 addons/popochiu/engine/interfaces/i_inventory.gd create mode 100644 addons/popochiu/engine/interfaces/i_inventory.gd.uid create mode 100644 addons/popochiu/engine/interfaces/i_room.gd create mode 100644 addons/popochiu/engine/interfaces/i_room.gd.uid create mode 100644 addons/popochiu/engine/objects/character/popochiu_character.gd create mode 100644 addons/popochiu/engine/objects/character/popochiu_character.gd.uid create mode 100644 addons/popochiu/engine/objects/character/popochiu_character.tscn create mode 100644 addons/popochiu/engine/objects/character/popochiu_character_data.gd create mode 100644 addons/popochiu/engine/objects/character/popochiu_character_data.gd.uid create mode 100644 addons/popochiu/engine/objects/clickable/popochiu_clickable.gd create mode 100644 addons/popochiu/engine/objects/clickable/popochiu_clickable.gd.uid create mode 100644 addons/popochiu/engine/objects/dialog/popochiu_dialog.gd create mode 100644 addons/popochiu/engine/objects/dialog/popochiu_dialog.gd.uid create mode 100644 addons/popochiu/engine/objects/dialog/popochiu_dialog_option.gd create mode 100644 addons/popochiu/engine/objects/dialog/popochiu_dialog_option.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_menu/dialog_menu.gd create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_menu/dialog_menu.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_menu/dialog_menu.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_menu/dialog_menu_option/dialog_menu_option.gd create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_menu/dialog_menu_option/dialog_menu_option.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_menu/dialog_menu_option/dialog_menu_option.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/dialog_caption/dialog_caption.gd create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/dialog_caption/dialog_caption.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/dialog_caption/dialog_caption.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/dialog_overhead/dialog_overhead.gd create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/dialog_overhead/dialog_overhead.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/dialog_overhead/dialog_overhead.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/dialog_portrait/dialog_portrait.gd create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/dialog_portrait/dialog_portrait.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/dialog_portrait/dialog_portrait.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/dialog_text.gd create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/dialog_text.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/dialog_text.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/images/ico_continue.png create mode 100644 addons/popochiu/engine/objects/gui/components/dialog_text/images/ico_continue.png.import create mode 100644 addons/popochiu/engine/objects/gui/components/hover_text/hover_text.gd create mode 100644 addons/popochiu/engine/objects/gui/components/hover_text/hover_text.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/hover_text/hover_text.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/inventory_bar/inventory_bar.gd create mode 100644 addons/popochiu/engine/objects/gui/components/inventory_bar/inventory_bar.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/inventory_bar/inventory_bar.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/inventory_grid/images/inventory_grid_down_button.png create mode 100644 addons/popochiu/engine/objects/gui/components/inventory_grid/images/inventory_grid_down_button.png.import create mode 100644 addons/popochiu/engine/objects/gui/components/inventory_grid/images/inventory_grid_up_button.png create mode 100644 addons/popochiu/engine/objects/gui/components/inventory_grid/images/inventory_grid_up_button.png.import create mode 100644 addons/popochiu/engine/objects/gui/components/inventory_grid/inventory_grid.gd create mode 100644 addons/popochiu/engine/objects/gui/components/inventory_grid/inventory_grid.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/inventory_grid/inventory_grid.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/inventory_grid/inventory_grid_slot.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/popups/confirmation_popup/confirmation_popup.gd create mode 100644 addons/popochiu/engine/objects/gui/components/popups/confirmation_popup/confirmation_popup.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/popups/confirmation_popup/confirmation_popup.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/popups/history_popup/components/dialog_line.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/popups/history_popup/components/interaction_line.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/popups/history_popup/history_popup.gd create mode 100644 addons/popochiu/engine/objects/gui/components/popups/history_popup/history_popup.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/popups/history_popup/history_popup.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/popups/popochiu_popup.gd create mode 100644 addons/popochiu/engine/objects/gui/components/popups/popochiu_popup.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/popups/popochiu_popup.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/popups/popochiu_popup_panel_container.tres create mode 100644 addons/popochiu/engine/objects/gui/components/popups/quit_popup/quit_popup.gd create mode 100644 addons/popochiu/engine/objects/gui/components/popups/quit_popup/quit_popup.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/popups/quit_popup/quit_popup.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/popups/save_and_load_popup/save_and_load_popup.gd create mode 100644 addons/popochiu/engine/objects/gui/components/popups/save_and_load_popup/save_and_load_popup.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/popups/save_and_load_popup/save_and_load_popup.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/popups/sound_settings_popup/sound_settings_popup.gd create mode 100644 addons/popochiu/engine/objects/gui/components/popups/sound_settings_popup/sound_settings_popup.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/popups/sound_settings_popup/sound_settings_popup.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/popups/text_settings_popup/text_settings_popup.gd create mode 100644 addons/popochiu/engine/objects/gui/components/popups/text_settings_popup/text_settings_popup.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/popups/text_settings_popup/text_settings_popup.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/buttons/btn_load.gd create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/buttons/btn_load.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/buttons/btn_quit.gd create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/buttons/btn_quit.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/buttons/settings_bar_button.gd create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/buttons/settings_bar_button.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_audio.png create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_audio.png.import create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_dialog_history.png create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_dialog_history.png.import create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_load.png create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_load.png.import create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_quit.png create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_quit.png.import create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_save.png create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_save.png.import create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_text.png create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_text.png.import create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/resources/text_speed_option.gd create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/resources/text_speed_option.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/settings_bar.gd create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/settings_bar.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/settings_bar/settings_bar.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/sound_volumes/sound_volumes.gd create mode 100644 addons/popochiu/engine/objects/gui/components/sound_volumes/sound_volumes.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/sound_volumes/sound_volumes.tscn create mode 100644 addons/popochiu/engine/objects/gui/components/system_text/system_text.gd create mode 100644 addons/popochiu/engine/objects/gui/components/system_text/system_text.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/components/system_text/system_text.tscn create mode 100644 addons/popochiu/engine/objects/gui/fonts/minecraftia-regular.ttf create mode 100644 addons/popochiu/engine/objects/gui/fonts/minecraftia-regular.ttf.import create mode 100644 addons/popochiu/engine/objects/gui/fonts/monkeyisland_1991.ttf create mode 100644 addons/popochiu/engine/objects/gui/fonts/monkeyisland_1991.ttf.import create mode 100644 addons/popochiu/engine/objects/gui/popochiu_commands.gd create mode 100644 addons/popochiu/engine/objects/gui/popochiu_commands.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/popochiu_gui.gd create mode 100644 addons/popochiu/engine/objects/gui/popochiu_gui.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/popochiu_gui.tscn create mode 100644 addons/popochiu/engine/objects/gui/resources/base_gui_theme.tres create mode 100644 addons/popochiu/engine/objects/gui/resources/images/check_button_checked.png create mode 100644 addons/popochiu/engine/objects/gui/resources/images/check_button_checked.png.import create mode 100644 addons/popochiu/engine/objects/gui/resources/images/check_button_unchecked.png create mode 100644 addons/popochiu/engine/objects/gui/resources/images/check_button_unchecked.png.import create mode 100644 addons/popochiu/engine/objects/gui/resources/images/close.png create mode 100644 addons/popochiu/engine/objects/gui/resources/images/close.png.import create mode 100644 addons/popochiu/engine/objects/gui/resources/images/close_highlight.png create mode 100644 addons/popochiu/engine/objects/gui/resources/images/close_highlight.png.import create mode 100644 addons/popochiu/engine/objects/gui/resources/images/down_arrow.png create mode 100644 addons/popochiu/engine/objects/gui/resources/images/down_arrow.png.import create mode 100644 addons/popochiu/engine/objects/gui/resources/images/grabber.png create mode 100644 addons/popochiu/engine/objects/gui/resources/images/grabber.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/9_verb_commands.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/9_verb_commands.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/9_verb_gui.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/9_verb_gui.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/9_verb_gui.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/9_verb_gui_info.tres create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_hover_text/9_verb_hover_text.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_hover_text/9_verb_hover_text.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/9_verb_inventory_grid.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/9_verb_inventory_grid.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/9_verb_inventory_grid.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/9_verb_inventory_slot.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/images/9verb_inventory_down.png create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/images/9verb_inventory_down.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/images/9verb_inventory_up.png create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/images/9verb_inventory_up.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_panel/9_verb_panel.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_panel/9_verb_panel.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_panel/9_verb_panel.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/commands_container/9_verb_command_button.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/commands_container/9_verb_command_button.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/commands_container/9_verb_commands_container.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/commands_container/9_verb_commands_container.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/quit_popup/9_verb_quit_popup.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/settings_popup/9_verb_settings_popup.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/settings_popup/9_verb_settings_popup.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/components/settings_popup/9_verb_settings_popup.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/images/9verb_cursor.png create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/images/9verb_cursor.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/images/9verb_ico_settings.png create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/images/9verb_ico_settings.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/9_verb/resources/9_verb_button_group.tres create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_bar/sierra_bar.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_bar/sierra_bar.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_bar/sierra_bar.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_command_button/sierra_command_button.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_command_button/sierra_command_button.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_inventory_popup/images/btn_down.png create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_inventory_popup/images/btn_down.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_inventory_popup/images/btn_up.png create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_inventory_popup/images/btn_up.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_inventory_popup/sierra_inventory_button_group.tres create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_inventory_popup/sierra_inventory_grid.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_inventory_popup/sierra_inventory_popup.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_inventory_popup/sierra_inventory_popup.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_inventory_popup/sierra_inventory_popup.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_inventory_popup/sierra_inventory_slot/sierra_inventory_slot.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_inventory_popup/sierra_inventory_slot/sierra_inventory_slot.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_inventory_popup/sierra_inventory_slot/sierra_inventory_slot.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_menu/sierra_commands_container.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_menu/sierra_commands_container.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_menu/sierra_menu.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_menu/sierra_menu.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_menu/sierra_menu.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_settings_popup/sierra_settings_popup.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_settings_popup/sierra_settings_popup.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sierra_settings_popup/sierra_settings_popup.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/components/sound_popup/sierra_sound_popup.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_help.png create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_help.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_interact.png create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_interact.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_inventory.png create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_inventory.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_look.png create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_look.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_quit.png create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_quit.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_select.png create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_select.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_settings.png create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_settings.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_talk.png create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_talk.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_walk.png create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/btn_walk.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/sierra_cursor.png create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/images/sierra_cursor.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/sierra_commands.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/sierra_commands.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/sierra_gui.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/sierra_gui.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/sierra_gui.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/sierra/sierra_gui_info.tres create mode 100644 addons/popochiu/engine/objects/gui/templates/simple_click/images/simple_click_cursor.png create mode 100644 addons/popochiu/engine/objects/gui/templates/simple_click/images/simple_click_cursor.png.import create mode 100644 addons/popochiu/engine/objects/gui/templates/simple_click/simple_click_commands.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/simple_click/simple_click_commands.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/simple_click/simple_click_gui.gd create mode 100644 addons/popochiu/engine/objects/gui/templates/simple_click/simple_click_gui.gd.uid create mode 100644 addons/popochiu/engine/objects/gui/templates/simple_click/simple_click_gui.tscn create mode 100644 addons/popochiu/engine/objects/gui/templates/simple_click/simple_click_gui_info.tres create mode 100644 addons/popochiu/engine/objects/hotspot/popochiu_hotspot.gd create mode 100644 addons/popochiu/engine/objects/hotspot/popochiu_hotspot.gd.uid create mode 100644 addons/popochiu/engine/objects/hotspot/popochiu_hotspot.tscn create mode 100644 addons/popochiu/engine/objects/inventory_item/popochiu_inventory_item.gd create mode 100644 addons/popochiu/engine/objects/inventory_item/popochiu_inventory_item.gd.uid create mode 100644 addons/popochiu/engine/objects/inventory_item/popochiu_inventory_item.tscn create mode 100644 addons/popochiu/engine/objects/inventory_item/popochiu_inventory_item_data.gd create mode 100644 addons/popochiu/engine/objects/inventory_item/popochiu_inventory_item_data.gd.uid create mode 100644 addons/popochiu/engine/objects/popochiu_main_camera.gd create mode 100644 addons/popochiu/engine/objects/popochiu_main_camera.gd.uid create mode 100644 addons/popochiu/engine/objects/popochiu_settings.gd create mode 100644 addons/popochiu/engine/objects/popochiu_settings.gd.uid create mode 100644 addons/popochiu/engine/objects/prop/popochiu_prop.gd create mode 100644 addons/popochiu/engine/objects/prop/popochiu_prop.gd.uid create mode 100644 addons/popochiu/engine/objects/prop/popochiu_prop.tscn create mode 100644 addons/popochiu/engine/objects/region/popochiu_region.gd create mode 100644 addons/popochiu/engine/objects/region/popochiu_region.gd.uid create mode 100644 addons/popochiu/engine/objects/region/popochiu_region.tscn create mode 100644 addons/popochiu/engine/objects/room/popochiu_room.gd create mode 100644 addons/popochiu/engine/objects/room/popochiu_room.gd.uid create mode 100644 addons/popochiu/engine/objects/room/popochiu_room.tscn create mode 100644 addons/popochiu/engine/objects/room/popochiu_room_data.gd create mode 100644 addons/popochiu/engine/objects/room/popochiu_room_data.gd.uid create mode 100644 addons/popochiu/engine/objects/transition_layer/images/bg.png.import create mode 100644 addons/popochiu/engine/objects/transition_layer/transition_layer.gd create mode 100644 addons/popochiu/engine/objects/transition_layer/transition_layer.gd.uid create mode 100644 addons/popochiu/engine/objects/transition_layer/transition_layer.tscn create mode 100644 addons/popochiu/engine/objects/walkable_area/popochiu_walkable_area.gd create mode 100644 addons/popochiu/engine/objects/walkable_area/popochiu_walkable_area.gd.uid create mode 100644 addons/popochiu/engine/objects/walkable_area/popochiu_walkable_area.tscn create mode 100644 addons/popochiu/engine/others/importer_defaults.gd create mode 100644 addons/popochiu/engine/others/importer_defaults.gd.uid create mode 100644 addons/popochiu/engine/others/input_actions.gd create mode 100644 addons/popochiu/engine/others/input_actions.gd.uid create mode 100644 addons/popochiu/engine/others/popochiu_gui_info.gd create mode 100644 addons/popochiu/engine/others/popochiu_gui_info.gd.uid create mode 100644 addons/popochiu/engine/others/popochiu_save_load.gd create mode 100644 addons/popochiu/engine/others/popochiu_save_load.gd.uid create mode 100644 addons/popochiu/engine/others/popochiu_utils.gd create mode 100644 addons/popochiu/engine/others/popochiu_utils.gd.uid create mode 100644 addons/popochiu/engine/popochiu.gd create mode 100644 addons/popochiu/engine/popochiu.gd.uid create mode 100644 addons/popochiu/engine/popochiu.tscn create mode 100644 addons/popochiu/engine/templates/character_state_template.gd create mode 100644 addons/popochiu/engine/templates/character_state_template.gd.uid create mode 100644 addons/popochiu/engine/templates/character_template.gd create mode 100644 addons/popochiu/engine/templates/character_template.gd.uid create mode 100644 addons/popochiu/engine/templates/dialog_template.gd create mode 100644 addons/popochiu/engine/templates/dialog_template.gd.uid create mode 100644 addons/popochiu/engine/templates/empty_script_template.gd create mode 100644 addons/popochiu/engine/templates/empty_script_template.gd.uid create mode 100644 addons/popochiu/engine/templates/gui/9_verb_commands_template.gd create mode 100644 addons/popochiu/engine/templates/gui/9_verb_commands_template.gd.uid create mode 100644 addons/popochiu/engine/templates/gui/custom_commands_template.gd create mode 100644 addons/popochiu/engine/templates/gui/custom_commands_template.gd.uid create mode 100644 addons/popochiu/engine/templates/gui/gui_template.gd create mode 100644 addons/popochiu/engine/templates/gui/gui_template.gd.uid create mode 100644 addons/popochiu/engine/templates/gui/popup_template.gd create mode 100644 addons/popochiu/engine/templates/gui/popup_template.gd.uid create mode 100644 addons/popochiu/engine/templates/gui/sierra_commands_template.gd create mode 100644 addons/popochiu/engine/templates/gui/sierra_commands_template.gd.uid create mode 100644 addons/popochiu/engine/templates/gui/simple_click_commands_template.gd create mode 100644 addons/popochiu/engine/templates/gui/simple_click_commands_template.gd.uid create mode 100644 addons/popochiu/engine/templates/hotspot_template.gd create mode 100644 addons/popochiu/engine/templates/hotspot_template.gd.uid create mode 100644 addons/popochiu/engine/templates/inventory_item_state_template.gd create mode 100644 addons/popochiu/engine/templates/inventory_item_state_template.gd.uid create mode 100644 addons/popochiu/engine/templates/inventory_item_template.gd create mode 100644 addons/popochiu/engine/templates/inventory_item_template.gd.uid create mode 100644 addons/popochiu/engine/templates/prop_template.gd create mode 100644 addons/popochiu/engine/templates/prop_template.gd.uid create mode 100644 addons/popochiu/engine/templates/region_template.gd create mode 100644 addons/popochiu/engine/templates/region_template.gd.uid create mode 100644 addons/popochiu/engine/templates/room_state_template.gd create mode 100644 addons/popochiu/engine/templates/room_state_template.gd.uid create mode 100644 addons/popochiu/engine/templates/room_template.gd create mode 100644 addons/popochiu/engine/templates/room_template.gd.uid create mode 100644 addons/popochiu/engine/templates/walkable_area_template.gd create mode 100644 addons/popochiu/engine/templates/walkable_area_template.gd.uid create mode 100644 addons/popochiu/icons/btn_baseline.svg create mode 100644 addons/popochiu/icons/btn_baseline.svg.import create mode 100644 addons/popochiu/icons/btn_dialog_position.svg create mode 100644 addons/popochiu/icons/btn_dialog_position.svg.import create mode 100644 addons/popochiu/icons/btn_interaction_polygon.svg create mode 100644 addons/popochiu/icons/btn_interaction_polygon.svg.import create mode 100644 addons/popochiu/icons/btn_look_at_point.svg create mode 100644 addons/popochiu/icons/btn_look_at_point.svg.import create mode 100644 addons/popochiu/icons/btn_walk_to_point.svg create mode 100644 addons/popochiu/icons/btn_walk_to_point.svg.import create mode 100644 addons/popochiu/icons/character.png create mode 100644 addons/popochiu/icons/character.png.import create mode 100644 addons/popochiu/icons/dialog.png create mode 100644 addons/popochiu/icons/dialog.png.import create mode 100644 addons/popochiu/icons/hotspot.png create mode 100644 addons/popochiu/icons/hotspot.png.import create mode 100644 addons/popochiu/icons/ico_9verb.png create mode 100644 addons/popochiu/icons/ico_9verb.png.import create mode 100644 addons/popochiu/icons/ico_custom.png create mode 100644 addons/popochiu/icons/ico_custom.png.import create mode 100644 addons/popochiu/icons/ico_sierra.png create mode 100644 addons/popochiu/icons/ico_sierra.png.import create mode 100644 addons/popochiu/icons/ico_simple_click.png create mode 100644 addons/popochiu/icons/ico_simple_click.png.import create mode 100644 addons/popochiu/icons/inventory_item.png create mode 100644 addons/popochiu/icons/inventory_item.png.import create mode 100644 addons/popochiu/icons/inventory_item_start.png create mode 100644 addons/popochiu/icons/inventory_item_start.png.import create mode 100644 addons/popochiu/icons/music.png create mode 100644 addons/popochiu/icons/music.png.import create mode 100644 addons/popochiu/icons/player_character.png create mode 100644 addons/popochiu/icons/player_character.png.import create mode 100644 addons/popochiu/icons/point.png create mode 100644 addons/popochiu/icons/point.png.import create mode 100644 addons/popochiu/icons/prop.png create mode 100644 addons/popochiu/icons/prop.png.import create mode 100644 addons/popochiu/icons/region.png create mode 100644 addons/popochiu/icons/region.png.import create mode 100644 addons/popochiu/icons/room.png create mode 100644 addons/popochiu/icons/room.png.import create mode 100644 addons/popochiu/icons/sfx.png create mode 100644 addons/popochiu/icons/sfx.png.import create mode 100644 addons/popochiu/icons/ui.png create mode 100644 addons/popochiu/icons/ui.png.import create mode 100644 addons/popochiu/icons/voice.png create mode 100644 addons/popochiu/icons/voice.png.import create mode 100644 addons/popochiu/icons/walkable_area.png create mode 100644 addons/popochiu/icons/walkable_area.png.import create mode 100644 addons/popochiu/migration/helpers/popochiu_migration_helper.gd create mode 100644 addons/popochiu/migration/helpers/popochiu_migration_helper.gd.uid create mode 100644 addons/popochiu/migration/migration/popochiu_migration.gd create mode 100644 addons/popochiu/migration/migration/popochiu_migration.gd.uid create mode 100644 addons/popochiu/migration/migration/popochiu_migration_template.gd create mode 100644 addons/popochiu/migration/migration/popochiu_migration_template.gd.uid create mode 100644 addons/popochiu/migration/migrations/popochiu_migration_1.gd create mode 100644 addons/popochiu/migration/migrations/popochiu_migration_1.gd.uid create mode 100644 addons/popochiu/migration/migrations/popochiu_migration_2.gd create mode 100644 addons/popochiu/migration/migrations/popochiu_migration_2.gd.uid create mode 100644 addons/popochiu/migration/migrations/popochiu_migration_3.gd create mode 100644 addons/popochiu/migration/migrations/popochiu_migration_3.gd.uid create mode 100644 addons/popochiu/migration/migrations_manager.gd create mode 100644 addons/popochiu/migration/migrations_manager.gd.uid create mode 100644 addons/popochiu/palette/colodore.gpl create mode 100644 addons/popochiu/plugin.cfg create mode 100644 addons/popochiu/popochiu_export_plugin.gd create mode 100644 addons/popochiu/popochiu_export_plugin.gd.uid create mode 100644 addons/popochiu/popochiu_plugin.gd create mode 100644 addons/popochiu/popochiu_plugin.gd.uid create mode 100644 addons/popochiu/popochiu_resources.gd create mode 100644 addons/popochiu/popochiu_resources.gd.uid create mode 100644 assets/pixel-max-bottomless.png create mode 100644 assets/pixel-max-bottomless.png.import create mode 100644 assets/pixel-max.png create mode 100644 assets/pixel-max.png.import create mode 100644 game/autoloads/a.gd create mode 100644 game/autoloads/a.gd.uid create mode 100644 game/autoloads/c.gd create mode 100644 game/autoloads/c.gd.uid create mode 100644 game/autoloads/d.gd create mode 100644 game/autoloads/d.gd.uid create mode 100644 game/autoloads/i.gd create mode 100644 game/autoloads/i.gd.uid create mode 100644 game/autoloads/r.gd create mode 100644 game/autoloads/r.gd.uid create mode 100644 game/characters/max_casey/character_max_casey.gd create mode 100644 game/characters/max_casey/character_max_casey.gd.uid create mode 100644 game/characters/max_casey/character_max_casey.tres create mode 100644 game/characters/max_casey/character_max_casey.tscn create mode 100644 game/characters/max_casey/character_max_casey_state.gd create mode 100644 game/characters/max_casey/character_max_casey_state.gd.uid create mode 100644 game/gui/components/dialog_menu/dialog_menu.gd create mode 100644 game/gui/components/dialog_menu/dialog_menu.gd.uid create mode 100644 game/gui/components/dialog_menu/dialog_menu.tscn create mode 100644 game/gui/components/dialog_menu/dialog_menu_custom.gd create mode 100644 game/gui/components/dialog_menu/dialog_menu_custom.gd.uid create mode 100644 game/gui/components/dialog_menu/dialog_menu_option/dialog_menu_option.gd create mode 100644 game/gui/components/dialog_menu/dialog_menu_option/dialog_menu_option.gd.uid create mode 100644 game/gui/components/dialog_menu/dialog_menu_option/dialog_menu_option.tscn create mode 100644 game/gui/components/dialog_menu/dialog_menu_option/dialog_menu_option_custom.gd create mode 100644 game/gui/components/dialog_menu/dialog_menu_option/dialog_menu_option_custom.gd.uid create mode 100644 game/gui/components/dialog_text/dialog_portrait/dialog_portrait.gd create mode 100644 game/gui/components/dialog_text/dialog_portrait/dialog_portrait.gd.uid create mode 100644 game/gui/components/dialog_text/dialog_portrait/dialog_portrait.tscn create mode 100644 game/gui/components/dialog_text/dialog_portrait/dialog_portrait_custom.gd create mode 100644 game/gui/components/dialog_text/dialog_portrait/dialog_portrait_custom.gd.uid create mode 100644 game/gui/components/dialog_text/images/ico_continue.png create mode 100644 game/gui/components/dialog_text/images/ico_continue.png.import create mode 100644 game/gui/components/hover_text/hover_text.gd create mode 100644 game/gui/components/hover_text/hover_text.gd.uid create mode 100644 game/gui/components/hover_text/hover_text.tscn create mode 100644 game/gui/components/hover_text/hover_text_custom.gd create mode 100644 game/gui/components/hover_text/hover_text_custom.gd.uid create mode 100644 game/gui/components/inventory_grid/inventory_grid.gd create mode 100644 game/gui/components/inventory_grid/inventory_grid.gd.uid create mode 100644 game/gui/components/inventory_grid/inventory_grid_custom.gd create mode 100644 game/gui/components/inventory_grid/inventory_grid_custom.gd.uid create mode 100644 game/gui/components/popups/popochiu_popup.gd create mode 100644 game/gui/components/popups/popochiu_popup.gd.uid create mode 100644 game/gui/components/popups/popochiu_popup_custom.gd create mode 100644 game/gui/components/popups/popochiu_popup_custom.gd.uid create mode 100644 game/gui/components/popups/popochiu_popup_panel_container.tres create mode 100644 game/gui/components/popups/quit_popup/quit_popup.gd create mode 100644 game/gui/components/popups/quit_popup/quit_popup.gd.uid create mode 100644 game/gui/components/popups/quit_popup/quit_popup.tscn create mode 100644 game/gui/components/popups/quit_popup/quit_popup_custom.gd create mode 100644 game/gui/components/popups/quit_popup/quit_popup_custom.gd.uid create mode 100644 game/gui/components/popups/save_and_load_popup/save_and_load_popup.gd create mode 100644 game/gui/components/popups/save_and_load_popup/save_and_load_popup.gd.uid create mode 100644 game/gui/components/popups/save_and_load_popup/save_and_load_popup.tscn create mode 100644 game/gui/components/popups/save_and_load_popup/save_and_load_popup_custom.gd create mode 100644 game/gui/components/popups/save_and_load_popup/save_and_load_popup_custom.gd.uid create mode 100644 game/gui/components/popups/text_settings_popup/text_settings_popup.gd create mode 100644 game/gui/components/popups/text_settings_popup/text_settings_popup.gd.uid create mode 100644 game/gui/components/popups/text_settings_popup/text_settings_popup.tscn create mode 100644 game/gui/components/popups/text_settings_popup/text_settings_popup_custom.gd create mode 100644 game/gui/components/popups/text_settings_popup/text_settings_popup_custom.gd.uid create mode 100644 game/gui/components/sierra_bar/sierra_bar.gd create mode 100644 game/gui/components/sierra_bar/sierra_bar.gd.uid create mode 100644 game/gui/components/sierra_bar/sierra_bar.tscn create mode 100644 game/gui/components/sierra_bar/sierra_bar_custom.gd create mode 100644 game/gui/components/sierra_bar/sierra_bar_custom.gd.uid create mode 100644 game/gui/components/sierra_command_button/sierra_command_button.gd create mode 100644 game/gui/components/sierra_command_button/sierra_command_button.gd.uid create mode 100644 game/gui/components/sierra_command_button/sierra_command_button_custom.gd create mode 100644 game/gui/components/sierra_command_button/sierra_command_button_custom.gd.uid create mode 100644 game/gui/components/sierra_inventory_popup/images/btn_down.png create mode 100644 game/gui/components/sierra_inventory_popup/images/btn_down.png.import create mode 100644 game/gui/components/sierra_inventory_popup/images/btn_up.png create mode 100644 game/gui/components/sierra_inventory_popup/images/btn_up.png.import create mode 100644 game/gui/components/sierra_inventory_popup/sierra_inventory_button_group.tres create mode 100644 game/gui/components/sierra_inventory_popup/sierra_inventory_grid.tscn create mode 100644 game/gui/components/sierra_inventory_popup/sierra_inventory_popup.gd create mode 100644 game/gui/components/sierra_inventory_popup/sierra_inventory_popup.gd.uid create mode 100644 game/gui/components/sierra_inventory_popup/sierra_inventory_popup.tscn create mode 100644 game/gui/components/sierra_inventory_popup/sierra_inventory_popup_custom.gd create mode 100644 game/gui/components/sierra_inventory_popup/sierra_inventory_popup_custom.gd.uid create mode 100644 game/gui/components/sierra_inventory_popup/sierra_inventory_slot/sierra_inventory_slot.gd create mode 100644 game/gui/components/sierra_inventory_popup/sierra_inventory_slot/sierra_inventory_slot.gd.uid create mode 100644 game/gui/components/sierra_inventory_popup/sierra_inventory_slot/sierra_inventory_slot.tscn create mode 100644 game/gui/components/sierra_inventory_popup/sierra_inventory_slot/sierra_inventory_slot_custom.gd create mode 100644 game/gui/components/sierra_inventory_popup/sierra_inventory_slot/sierra_inventory_slot_custom.gd.uid create mode 100644 game/gui/components/sierra_menu/sierra_commands_container.gd create mode 100644 game/gui/components/sierra_menu/sierra_commands_container.gd.uid create mode 100644 game/gui/components/sierra_menu/sierra_commands_container_custom.gd create mode 100644 game/gui/components/sierra_menu/sierra_commands_container_custom.gd.uid create mode 100644 game/gui/components/sierra_menu/sierra_menu.gd create mode 100644 game/gui/components/sierra_menu/sierra_menu.gd.uid create mode 100644 game/gui/components/sierra_menu/sierra_menu.tscn create mode 100644 game/gui/components/sierra_menu/sierra_menu_custom.gd create mode 100644 game/gui/components/sierra_menu/sierra_menu_custom.gd.uid create mode 100644 game/gui/components/sierra_settings_popup/sierra_settings_popup.gd create mode 100644 game/gui/components/sierra_settings_popup/sierra_settings_popup.gd.uid create mode 100644 game/gui/components/sierra_settings_popup/sierra_settings_popup.tscn create mode 100644 game/gui/components/sierra_settings_popup/sierra_settings_popup_custom.gd create mode 100644 game/gui/components/sierra_settings_popup/sierra_settings_popup_custom.gd.uid create mode 100644 game/gui/components/sound_popup/sierra_sound_popup.tscn create mode 100644 game/gui/components/sound_volumes/sound_volumes.gd create mode 100644 game/gui/components/sound_volumes/sound_volumes.gd.uid create mode 100644 game/gui/components/sound_volumes/sound_volumes.tscn create mode 100644 game/gui/components/sound_volumes/sound_volumes_custom.gd create mode 100644 game/gui/components/sound_volumes/sound_volumes_custom.gd.uid create mode 100644 game/gui/components/system_text/system_text.gd create mode 100644 game/gui/components/system_text/system_text.gd.uid create mode 100644 game/gui/components/system_text/system_text.tscn create mode 100644 game/gui/components/system_text/system_text_custom.gd create mode 100644 game/gui/components/system_text/system_text_custom.gd.uid create mode 100644 game/gui/fonts/monkeyisland_1991.ttf create mode 100644 game/gui/fonts/monkeyisland_1991.ttf.import create mode 100644 game/gui/gui.gd create mode 100644 game/gui/gui.gd.uid create mode 100644 game/gui/gui.tscn create mode 100644 game/gui/gui_commands.gd create mode 100644 game/gui/gui_commands.gd.uid create mode 100644 game/gui/images/btn_help.png create mode 100644 game/gui/images/btn_help.png.import create mode 100644 game/gui/images/btn_interact.png create mode 100644 game/gui/images/btn_interact.png.import create mode 100644 game/gui/images/btn_inventory.png create mode 100644 game/gui/images/btn_inventory.png.import create mode 100644 game/gui/images/btn_look.png create mode 100644 game/gui/images/btn_look.png.import create mode 100644 game/gui/images/btn_quit.png create mode 100644 game/gui/images/btn_quit.png.import create mode 100644 game/gui/images/btn_settings.png create mode 100644 game/gui/images/btn_settings.png.import create mode 100644 game/gui/images/btn_talk.png create mode 100644 game/gui/images/btn_talk.png.import create mode 100644 game/gui/images/btn_walk.png create mode 100644 game/gui/images/btn_walk.png.import create mode 100644 game/gui/images/sierra_cursor.png create mode 100644 game/gui/images/sierra_cursor.png.import create mode 100644 game/gui/resources/gui_theme.tres create mode 100644 game/gui/resources/images/close.png create mode 100644 game/gui/resources/images/close.png.import create mode 100644 game/gui/resources/images/close_highlight.png create mode 100644 game/gui/resources/images/close_highlight.png.import create mode 100644 game/popochiu_data.cfg create mode 100644 game/popochiu_globals.gd create mode 100644 game/popochiu_globals.gd.uid create mode 100644 game/rooms/prototype/room_prototype.gd create mode 100644 game/rooms/prototype/room_prototype.gd.uid create mode 100644 game/rooms/prototype/room_prototype.tres create mode 100644 game/rooms/prototype/room_prototype.tscn create mode 100644 game/rooms/prototype/room_prototype_state.gd create mode 100644 game/rooms/prototype/room_prototype_state.gd.uid create mode 100644 game/rooms/prototype/walkable_areas/floor/walkable_area_floor.gd create mode 100644 game/rooms/prototype/walkable_areas/floor/walkable_area_floor.gd.uid create mode 100644 game/rooms/prototype/walkable_areas/floor/walkable_area_floor.tscn create mode 100644 icon.svg create mode 100644 icon.svg.import create mode 100644 project.godot diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/addons/popochiu/LICENSE b/addons/popochiu/LICENSE new file mode 100644 index 0000000..987c7c6 --- /dev/null +++ b/addons/popochiu/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Mateo Robayo Rogríguez + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd new file mode 100644 index 0000000..91d4ffa --- /dev/null +++ b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd @@ -0,0 +1,332 @@ +@tool +extends HBoxContainer +## Used to show new buttons in the EditorPlugin.CONTAINER_CANVAS_EDITOR_MENU (the top bar in the +## 2D editor) to select specific nodes in PopochiuClickable objects. + +var _active_popochiu_object: Node = null +var _shown_helpers := [] + +@onready var btn_baseline: Button = %BtnBaseline +@onready var btn_walk_to_point: Button = %BtnWalkToPoint +@onready var btn_look_at_point: Button = %BtnLookAtPoint +@onready var btn_dialog_pos: Button = %BtnDialogPos +@onready var btn_interaction_polygon: Button = %BtnInteractionPolygon + + +#region Godot ###################################################################################### +func _ready() -> void: + # Gizmos are always visible at editor load, so we'll set the buttons down + # to sync the status (hardcoded, not very good but enough for now) + _reset_buttons_state() + + # Connect to child signals + btn_baseline.pressed.connect(_toggle_baseline_visibility) + btn_walk_to_point.pressed.connect(_toggle_walk_to_point_visibility) + btn_look_at_point.pressed.connect(_toggle_look_at_point_visibility) + btn_dialog_pos.pressed.connect(_toggle_dialog_pos_visibility) + btn_interaction_polygon.pressed.connect(_select_interaction_polygon) + + # Connect to singleton signals + EditorInterface.get_selection().selection_changed.connect(_on_selection_changed) + EditorInterface.get_editor_settings().settings_changed.connect(_on_gizmo_settings_changed) + + _set_toolbar_buttons_color() + hide() + +#endregion + +#region Private #################################################################################### +func _toggle_walk_to_point_visibility() -> void: + PopochiuEditorHelper.signal_bus.gizmo_visibility_changed.emit( + PopochiuGizmoClickablePlugin.WALK_TO_POINT, + btn_walk_to_point.button_pressed + ) + + +func _toggle_look_at_point_visibility() -> void: + PopochiuEditorHelper.signal_bus.gizmo_visibility_changed.emit( + PopochiuGizmoClickablePlugin.LOOK_AT_POINT, + btn_look_at_point.button_pressed + ) + + +func _toggle_baseline_visibility() -> void: + PopochiuEditorHelper.signal_bus.gizmo_visibility_changed.emit( + PopochiuGizmoClickablePlugin.BASELINE, + btn_baseline.button_pressed + ) + + +func _toggle_dialog_pos_visibility() -> void: + PopochiuEditorHelper.signal_bus.gizmo_visibility_changed.emit( + PopochiuGizmoClickablePlugin.DIALOG_POS, + btn_dialog_pos.button_pressed + ) + + +func _select_interaction_polygon() -> void: + # Since we are going to select the interaction polygon node + # inside the node, let's hide the gizmos buttons + btn_walk_to_point.hide() + btn_baseline.hide() + + # If we are editing the polygon, go back and select the parent node + # then stop execution. + var selected_node := EditorInterface.get_selection().get_selected_nodes()[0] + if PopochiuEditorHelper.is_popochiu_obj_polygon( + selected_node + ): + EditorInterface.get_selection().add_node(selected_node.get_parent()) + _on_selection_changed() + return + + # If we are editing a popochiu object holding a polygon, let's move on. + + # This variable will hold the reference to the polygon we need to edit. + var obj_polygon: Node2D = null + + # Let's find the node holding the polygon + # Since different Popochiu Objects have different polygons (NavigationRegion2D + # for Walkable Areas, InteractionPolygon2D for props, etc...) we tagged them + # by a special metadata + obj_polygon = PopochiuEditorHelper.get_first_child_by_group( + _active_popochiu_object, + PopochiuEditorHelper.POPOCHIU_OBJECT_POLYGON_GROUP + ) + + if obj_polygon == null: + return + + EditorInterface.get_selection().clear() + EditorInterface.get_selection().add_node(obj_polygon) + obj_polygon.show() + + +func _on_gizmo_settings_changed() -> void: + # Pretty self explanatory + _set_walkable_areas_visibility() + _set_toolbar_buttons_color() + + +func _on_selection_changed() -> void: + # Always reset the walkable areas visibility depending on the user preferences + # Doing this immediately so, if this function exits early, the visibility is conditioned + # by the editor settings (partially fixes #325). + _set_walkable_areas_visibility() + + # Make sure this function works only if the user is editing a + # supported scene + if not PopochiuEditorHelper.is_popochiu_object( + EditorInterface.get_edited_scene_root() + ): + hide() + return + + # If we have no selection in the tree (the user clicked on an + # empty area or pressed ESC), we hide the toolbar. + if EditorInterface.get_selection().get_selected_nodes().is_empty(): + if _active_popochiu_object != null: + # TODO: this is not a helper function, because we want to get + # rid of this ASAP. The same logic is also in the function + # _set_polygons_visibility() in the base Popochiu object + # factory, and should be removed as well. + for node in _active_popochiu_object.get_children(): + if PopochiuEditorHelper.is_popochiu_obj_polygon(node): + node.hide() + # This "if" solves "!p_node->is_inside_tree()" internal Godot error + # The line inside is the logic we need to make this block work + if EditorInterface.get_edited_scene_root() == _active_popochiu_object: + EditorInterface.get_selection().add_node.call_deferred(_active_popochiu_object) + # Reset the clickable reference and hide the toolbar + # (restart from a blank state) + _active_popochiu_object = null + hide() + # NOTE: Here we used to pop all the buttons up, by invoking _reset_buttons_state() but + # this is undesirable, since it overrides the user's visibility choices for the session. + # Leaving this comment here for future reference. + + # Reset the walkable areas visibility depending on the user preferences + # Doing here because clicking on an empty area would hide the walkable areas + # ignoring the editor settings (fixes #325) + _set_walkable_areas_visibility() + + return + + # We identify which PopochiuClickable we are working on in the editor. + + # Case 1: + # There is only one selected node in the editor. It can be anything the user + # clicked on, or the polygon selected by clicking the toolbar button. + # (The user can never select the polygon directly because the node is not visible + # in the scene tree) + if EditorInterface.get_selection().get_selected_nodes().size() == 1: + var selected_node = EditorInterface.get_selection().get_selected_nodes()[0] + if PopochiuEditorHelper.is_popochiu_obj_polygon(selected_node): + _active_popochiu_object = selected_node.get_parent() + elif PopochiuEditorHelper.is_popochiu_room_object(selected_node): + var polygon = null + if is_instance_valid(_active_popochiu_object): + polygon = PopochiuEditorHelper.get_first_child_by_group( + _active_popochiu_object, + PopochiuEditorHelper.POPOCHIU_OBJECT_POLYGON_GROUP + ) + if (polygon != null): + polygon.hide() + btn_interaction_polygon.set_pressed_no_signal(false) + _active_popochiu_object = selected_node + else: + _active_popochiu_object = null + + # Case 2: + # We have more than one node selected. This can happen because the user selected + # more than one node explicitly (holding shift, or ctrl), or because the user selected + # one node in the scene while editing the polygon. + # In this case, since the polygon was selected programmatically and it's not in the scene + # tree, Godot will NOT remove it from selection and we need to do it by hand. + elif EditorInterface.get_selection().get_selected_nodes().size() > 1: + for node in EditorInterface.get_selection().get_selected_nodes(): + if PopochiuEditorHelper.is_popochiu_obj_polygon(node): + node.hide() + EditorInterface.get_selection().remove_node.call_deferred(node) + btn_interaction_polygon.set_pressed_no_signal(false) + + # Reset the walkable areas visibility depending on the user preferences + # Doing this also at the end because the state can be reset by one of the steps + # above. + _set_walkable_areas_visibility() + + # Always reset the button visibility depending on the state of the internal variables + _set_buttons_visibility() + + +## Handles the editor config that allows the WAs polygons to be always visible, +## not only during editing. +func _set_walkable_areas_visibility() -> void: + for child in PopochiuEditorHelper.get_all_children( + EditorInterface.get_edited_scene_root().find_child("WalkableAreas") + ): + # Not a polygon? Skip + if not PopochiuEditorHelper.is_popochiu_obj_polygon(child): + continue + # Should we show all the polygons? Show and go to the next one + if PopochiuEditorConfig.get_editor_setting( + PopochiuEditorConfig.GIZMOS_ALWAYS_SHOW_WA + ): + child.show() + continue + # If we are editing the polygon, make sure it stays visible! + if child in EditorInterface.get_selection().get_selected_nodes(): + child.show() + continue + # OK, we know we must hide this polygon now! + child.hide() + + +## Sets all the buttons color so that they are the same as the gizmos +## or make them theme-standard if the use so prefer (see editor settings) +func _set_toolbar_buttons_color() -> void: + if not PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_COLOR_TOOLBAR_BUTTONS): + # Reset button colors + _reset_toolbar_button_color(btn_baseline) + _reset_toolbar_button_color(btn_walk_to_point) + _reset_toolbar_button_color(btn_look_at_point) + _reset_toolbar_button_color(btn_dialog_pos) + _reset_toolbar_button_color(btn_interaction_polygon) + # Done + return + + _set_toolbar_button_color( + btn_baseline, + PopochiuEditorConfig.get_editor_setting( + PopochiuEditorConfig.GIZMOS_BASELINE_COLOR) + ) + _set_toolbar_button_color( + btn_walk_to_point, + PopochiuEditorConfig.get_editor_setting( + PopochiuEditorConfig.GIZMOS_WALK_TO_POINT_COLOR) + ) + _set_toolbar_button_color( + btn_look_at_point, + PopochiuEditorConfig.get_editor_setting( + PopochiuEditorConfig.GIZMOS_LOOK_AT_POINT_COLOR) + ) + _set_toolbar_button_color( + btn_dialog_pos, + PopochiuEditorConfig.get_editor_setting( + PopochiuEditorConfig.GIZMOS_DIALOG_POS_COLOR) + ) + _set_toolbar_button_color( + btn_interaction_polygon, + Color.RED # no config for this at the moment + ) + + +## Internal helper to reduce code duplication +func _set_toolbar_button_color(btn, color) -> void: + btn.add_theme_color_override("icon_normal_color", color) + btn.add_theme_color_override("icon_hover_color", color.lightened(1.0)) + btn.add_theme_color_override("icon_focused_color", color.lightened(1.0)) + btn.add_theme_color_override("icon_pressed_color", color.darkened(0.2)) + btn.add_theme_color_override("icon_hover_pressed_color", color.lightened(1.0)) + + +## Internal helper to reduce code duplication +func _reset_toolbar_button_color(btn) -> void: + btn.remove_theme_color_override("icon_normal_color") + btn.remove_theme_color_override("icon_hover_color") + btn.remove_theme_color_override("icon_focused_color") + btn.remove_theme_color_override("icon_pressed_color") + btn.remove_theme_color_override("icon_hover_pressed_color") + + +func _set_buttons_visibility() -> void: + # Let's assume the buttons are all hidden... + hide() + btn_baseline.hide() + btn_walk_to_point.hide() + btn_look_at_point.hide() + btn_dialog_pos.hide() + btn_interaction_polygon.hide() + + # If we are not editing a Popochiu object, nothing to do + if not PopochiuEditorHelper.is_popochiu_room_object(_active_popochiu_object): + return + + # Now we know we have to show the toolbar + show() + + # Every Popochiu Object always shows the polygon editing button when edited + # unless we are in a room scene and selected a character + if not ( + PopochiuEditorHelper.is_character(_active_popochiu_object) + and PopochiuEditorHelper.is_editing_room() + ): + btn_interaction_polygon.show() + + # If the selected node in the editor is actually a popochiu object polygon + # We don't have to show the other buttons, only the polygon editing toggle + if PopochiuEditorHelper.is_popochiu_obj_polygon( + EditorInterface.get_selection().get_selected_nodes()[0] + ): + return + + # If we are in a room scene, we may have selected a room object of sort, so check + # for the various types and hide the ones we don't need + if PopochiuEditorHelper.is_room(EditorInterface.get_edited_scene_root()): + # If we are editing a clickable object, let's show gizmos buttons too + if _active_popochiu_object is PopochiuClickable: + btn_baseline.show() + btn_walk_to_point.show() + btn_look_at_point.show() + + # If we are in a Character scene, show polygon and dialogpos gizmo button + elif PopochiuEditorHelper.is_character(EditorInterface.get_edited_scene_root()): + btn_dialog_pos.show() + + +# Make all buttons pop-up +func _reset_buttons_state() -> void: + btn_baseline.set_pressed_no_signal(true) + btn_walk_to_point.set_pressed_no_signal(true) + btn_look_at_point.set_pressed_no_signal(true) + btn_dialog_pos.set_pressed_no_signal(true) diff --git a/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd.uid b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd.uid new file mode 100644 index 0000000..091c1e9 --- /dev/null +++ b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd.uid @@ -0,0 +1 @@ +uid://15ys464umb3h diff --git a/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.tscn b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.tscn new file mode 100644 index 0000000..94a5786 --- /dev/null +++ b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.tscn @@ -0,0 +1,65 @@ +[gd_scene load_steps=7 format=3 uid="uid://wd748u1vdybq"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd" id="1_vs7c6"] +[ext_resource type="Texture2D" uid="uid://b3sku5v1n23ni" path="res://addons/popochiu/icons/btn_baseline.svg" id="2_w3cau"] +[ext_resource type="Texture2D" uid="uid://dmt2epjmlpv56" path="res://addons/popochiu/icons/btn_walk_to_point.svg" id="3_ifql1"] +[ext_resource type="Texture2D" uid="uid://skjlvpct7ah7" path="res://addons/popochiu/icons/btn_look_at_point.svg" id="4_bge33"] +[ext_resource type="Texture2D" uid="uid://cekffh7bsuanp" path="res://addons/popochiu/icons/btn_dialog_position.svg" id="5_803mj"] +[ext_resource type="Texture2D" uid="uid://cyun4rylrtrvm" path="res://addons/popochiu/icons/btn_interaction_polygon.svg" id="6_6oxl8"] + +[node name="PopochiuCanvasEditorMenu" type="HBoxContainer"] +visible = false +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("1_vs7c6") + +[node name="Label" type="Label" parent="."] +layout_mode = 2 +text = "Popochiu " +vertical_alignment = 1 + +[node name="BtnBaseline" type="Button" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 2 +tooltip_text = "Baseline" +theme_type_variation = &"FlatButton" +toggle_mode = true +button_pressed = true +icon = ExtResource("2_w3cau") + +[node name="BtnWalkToPoint" type="Button" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 2 +tooltip_text = "Walk-To Point" +theme_type_variation = &"FlatButton" +toggle_mode = true +button_pressed = true +icon = ExtResource("3_ifql1") + +[node name="BtnLookAtPoint" type="Button" parent="."] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Look-At Point" +theme_type_variation = &"FlatButton" +toggle_mode = true +button_pressed = true +icon = ExtResource("4_bge33") + +[node name="BtnDialogPos" type="Button" parent="."] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Dialog Position" +theme_type_variation = &"FlatButton" +toggle_mode = true +button_pressed = true +icon = ExtResource("5_803mj") + +[node name="BtnInteractionPolygon" type="Button" parent="."] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Interaction Polygon" +theme_type_variation = &"FlatButton" +toggle_mode = true +icon = ExtResource("6_6oxl8") diff --git a/addons/popochiu/editor/config/config.gd b/addons/popochiu/editor/config/config.gd new file mode 100644 index 0000000..43496e5 --- /dev/null +++ b/addons/popochiu/editor/config/config.gd @@ -0,0 +1,291 @@ +@tool +class_name PopochiuConfig +extends RefCounted + +enum DialogStyle { + ABOVE_CHARACTER, + PORTRAIT, + CAPTION, + #PORTRAIT_ABOVE_CHARACTER, # TODO: Create a GUI node to make this option available + #BUBBLE_ABOVE_CHARACTER, # TODO: Create a GUI node to make this option available +} + +# Thanks to @drbloop for providing the bases of the new approach for moving the popochiu settings to +# Godot's ProjectSettings instead of using a Resource file. +# ---- GUI ----------------------------------------------------------------------------------------- +const SCALE_GUI = "popochiu/gui/experimental_scale_gui" +const FADE_COLOR = "popochiu/gui/fade_color" +const SKIP_CUTSCENE_TIME = "popochiu/gui/skip_cutscene_time" +const TL_FIRST_ROOM = "popochiu/gui/show_transition_layer_in_first_room" + +# ---- Dialogs ------------------------------------------------------------------------------------- +const TEXT_SPEED = "popochiu/dialogs/text_speed" +const AUTO_CONTINUE_TEXT = "popochiu/dialogs/auto_continue_text" +const USE_TRANSLATIONS = "popochiu/dialogs/use_translations" +const GIBBERISH_SPOKEN_TEXT = 'popochiu/dialogs/gibberish_spoken_text' +const GIBBERISH_DIALOG_OPTIONS = 'popochiu/dialogs/gibberish_dialog_options' +const DIALOG_STYLE = "popochiu/dialogs/dialog_style" + +# ---- Inventory ----------------------------------------------------------------------------------- +const INVENTORY_LIMIT = "popochiu/inventory/inventory_limit" +const INVENTORY_ITEMS_ON_START = "popochiu/inventory/items_on_start" + +# ---- Aseprite Importing -------------------------------------------------------------------------- +const ASEPRITE_IMPORT_ANIMATION = "popochiu/aseprite_import/import_animation_by_default" +const ASEPRITE_LOOP_ANIMATION = "popochiu/aseprite_import/loop_animation_by_default" +const ASEPRITE_PROPS_VISIBLE = "popochiu/aseprite_import/new_props_visible_by_default" +const ASEPRITE_PROPS_CLICKABLE = "popochiu/aseprite_import/new_props_clickable_by_default" +const ASEPRITE_WIPE_OLD_ANIMATIONS = "popochiu/aseprite_import/wipe_old_animations" + +# ---- Pixel game ---------------------------------------------------------------------------------- +const PIXEL_ART_TEXTURES = "popochiu/pixel/pixel_art_textures" +const PIXEL_PERFECT = "popochiu/pixel/pixel_perfect" + +# ---- Audio --------------------------------------------------------------------------------------- +const PREFIX_CHARACTER = "popochiu/audio/prefix_character" +const MUSIC_PREFIXES = "popochiu/audio/music_prefixes" +const SOUND_EFFECT_PREFIXES = "popochiu/audio/sound_effect_prefixes" +const VOICE_PREFIXES = "popochiu/audio/voice_prefixes" +const UI_PREFIXES = "popochiu/audio/ui_prefixes" + +# ---- DEV ----------------------------------------------------------------------------------------- +const DEV_USE_ADDON_TEMPLATE = "popochiu/dev/use_addon_template" + +static var defaults := { + SCALE_GUI: false, + FADE_COLOR: Color.BLACK, + SKIP_CUTSCENE_TIME: 0.2, + TL_FIRST_ROOM: false, + TEXT_SPEED: 0.1, + AUTO_CONTINUE_TEXT: false, + USE_TRANSLATIONS: false, + GIBBERISH_SPOKEN_TEXT: false, + GIBBERISH_DIALOG_OPTIONS: false, + DIALOG_STYLE: DialogStyle.ABOVE_CHARACTER, + INVENTORY_LIMIT: 0, + INVENTORY_ITEMS_ON_START: [], + ASEPRITE_IMPORT_ANIMATION: true, + ASEPRITE_LOOP_ANIMATION: true, + ASEPRITE_PROPS_VISIBLE: true, + ASEPRITE_PROPS_CLICKABLE: true, + ASEPRITE_WIPE_OLD_ANIMATIONS: true, + PIXEL_ART_TEXTURES: false, + PIXEL_PERFECT: false, + PREFIX_CHARACTER: "_", + MUSIC_PREFIXES: "mx,", + SOUND_EFFECT_PREFIXES: "sfx,", + VOICE_PREFIXES: "vo,", + UI_PREFIXES: "ui,", + DEV_USE_ADDON_TEMPLATE: false, +} + + +#region Public ##################################################################################### +static func initialize_project_settings(): + # ---- GUI ------------------------------------------------------------------------------------- + _initialize_project_setting(SCALE_GUI, TYPE_BOOL) + _initialize_project_setting(FADE_COLOR, TYPE_COLOR) + _initialize_project_setting(SKIP_CUTSCENE_TIME, TYPE_FLOAT) + _initialize_project_setting(TL_FIRST_ROOM, TYPE_BOOL) + + # ---- Dialogs --------------------------------------------------------------------------------- + _initialize_project_setting(TEXT_SPEED, TYPE_FLOAT, PROPERTY_HINT_RANGE, "0.0,0.1") + _initialize_project_setting(AUTO_CONTINUE_TEXT, TYPE_BOOL) + #_initialize_project_setting(USE_TRANSLATIONS, TYPE_BOOL) + #_initialize_project_setting( + #DIALOG_STYLE, + #TYPE_INT, + #PROPERTY_HINT_ENUM, + ## TODO: Add other options: Portrait Above Character, Bubble Above Character + #"Above Character,Portrait,Caption" + #) + _initialize_project_setting(GIBBERISH_SPOKEN_TEXT, TYPE_BOOL) + _initialize_project_setting(GIBBERISH_DIALOG_OPTIONS, TYPE_BOOL) + + # ---- Inventory ------------------------------------------------------------------------------- + _initialize_project_setting(INVENTORY_LIMIT, TYPE_INT) + _initialize_project_setting( + INVENTORY_ITEMS_ON_START, + TYPE_ARRAY, + PROPERTY_HINT_TYPE_STRING, + "%d:" % [TYPE_STRING] + ) + + # ---- Aseprite Importing ---------------------------------------------------------------------- + _initialize_project_setting(ASEPRITE_IMPORT_ANIMATION, TYPE_BOOL) + _initialize_project_setting(ASEPRITE_LOOP_ANIMATION, TYPE_BOOL) + _initialize_project_setting(ASEPRITE_PROPS_VISIBLE, TYPE_BOOL) + _initialize_project_setting(ASEPRITE_PROPS_CLICKABLE, TYPE_BOOL) + _initialize_project_setting(ASEPRITE_WIPE_OLD_ANIMATIONS, TYPE_BOOL) + + # ---- Pixel game ------------------------------------------------------------------------------ + _initialize_project_setting(PIXEL_ART_TEXTURES, TYPE_BOOL) + _initialize_project_setting(PIXEL_PERFECT, TYPE_BOOL) + + # ---- Audio ----------------------------------------------------------------------------------- + _initialize_project_setting(PREFIX_CHARACTER, TYPE_STRING) + _initialize_project_setting(MUSIC_PREFIXES, TYPE_STRING) + _initialize_project_setting(SOUND_EFFECT_PREFIXES, TYPE_STRING) + _initialize_project_setting(VOICE_PREFIXES, TYPE_STRING) + _initialize_project_setting(UI_PREFIXES, TYPE_STRING) + + # ---- DEV ------------------------------------------------------------------------------------- + _initialize_advanced_project_setting(DEV_USE_ADDON_TEMPLATE, TYPE_BOOL) + + ProjectSettings.save() + + +static func set_project_setting(key: String, value) -> void: + ProjectSettings.set_setting(key, value) + ProjectSettings.save() + + +# ---- GUI ----------------------------------------------------------------------------------------- +static func is_scale_gui() -> bool: + return _get_project_setting(SCALE_GUI) + + +static func get_fade_color() -> Color: + return _get_project_setting(FADE_COLOR) + + +static func get_skip_cutscene_time() -> float: + return _get_project_setting(SKIP_CUTSCENE_TIME) + +static func should_show_tl_in_first_room() -> bool: + return _get_project_setting(TL_FIRST_ROOM) + + +# ---- Dialogs ------------------------------------------------------------------------------------- +static func get_text_speed() -> float: + return _get_project_setting(TEXT_SPEED) + + +static func is_auto_continue_text() -> bool: + return _get_project_setting(AUTO_CONTINUE_TEXT) + + +static func is_use_translations() -> bool: + return _get_project_setting(USE_TRANSLATIONS) + + +static func get_dialog_style() -> int: + return _get_project_setting(DIALOG_STYLE) + + +static func should_talk_gibberish() -> bool: + return _get_project_setting(GIBBERISH_SPOKEN_TEXT) + + +static func should_dialog_options_be_gibberish() -> bool: + return _get_project_setting(GIBBERISH_DIALOG_OPTIONS) + + +# ---- Inventory ----------------------------------------------------------------------------------- +static func get_inventory_limit() -> int: + return _get_project_setting(INVENTORY_LIMIT) + + +static func set_inventory_items_on_start(items: Array) -> void: + set_project_setting(INVENTORY_ITEMS_ON_START, items) + + +static func get_inventory_items_on_start() -> Array: + return _get_project_setting(INVENTORY_ITEMS_ON_START) + + +# ---- Aseprite Importing -------------------------------------------------------------------------- +static func is_default_animation_import_enabled() -> bool: + return _get_project_setting(ASEPRITE_IMPORT_ANIMATION) + + +static func is_default_animation_loop_enabled() -> bool: + return _get_project_setting(ASEPRITE_LOOP_ANIMATION) + + +static func is_default_animation_prop_visible() -> bool: + return _get_project_setting(ASEPRITE_PROPS_VISIBLE) + + +static func is_default_animation_prop_clickable() -> bool: + return _get_project_setting(ASEPRITE_PROPS_CLICKABLE) + + +static func is_default_wipe_old_anims_enabled() -> bool: + return _get_project_setting(ASEPRITE_WIPE_OLD_ANIMATIONS) + + +# ---- Pixel game ---------------------------------------------------------------------------------- +static func set_pixel_art_textures(use_pixel_art_textures: bool) -> void: + set_project_setting(PIXEL_ART_TEXTURES, use_pixel_art_textures) + + +static func is_pixel_art_textures() -> bool: + return _get_project_setting(PIXEL_ART_TEXTURES) + + +static func is_pixel_perfect() -> bool: + return _get_project_setting(PIXEL_PERFECT) + + +# ---- Audio --------------------------------------------------------------------------------------- +static func get_prefix_character() -> String: + return _get_project_setting(PREFIX_CHARACTER) + + +static func get_music_prefixes() -> String: + return _get_project_setting(MUSIC_PREFIXES) + + +static func get_sound_effect_prefixes() -> String: + return _get_project_setting(SOUND_EFFECT_PREFIXES) + + +static func get_voice_prefixes() -> String: + return _get_project_setting(VOICE_PREFIXES) + + +static func get_ui_prefixes() -> String: + return _get_project_setting(UI_PREFIXES) + + +# ---- DEV ----------------------------------------------------------------------------------------- +static func is_use_addon_template() -> bool: + return _get_project_setting(DEV_USE_ADDON_TEMPLATE) + + +#endregion + +#region Private #################################################################################### +static func _initialize_project_setting( + key: String, type: int, hint := PROPERTY_HINT_NONE, hint_string := "" +) -> void: + _create_setting(key, type, hint, hint_string) + ProjectSettings.set_as_basic(key, true) + + +static func _initialize_advanced_project_setting( + key: String, type: int, hint := PROPERTY_HINT_NONE, hint_string := "" +) -> void: + _create_setting(key, type, hint, hint_string) + + +static func _create_setting( + key: String, type: int, hint := PROPERTY_HINT_NONE, hint_string := "" +) -> void: + ProjectSettings.set_setting(key, ProjectSettings.get_setting(key, defaults[key])) + ProjectSettings.set_initial_value(key, defaults[key]) + ProjectSettings.add_property_info({ + "name": key, + "type": type, + "hint": hint, + "hint_string": hint_string, + }) + + +static func _get_project_setting(key: String): + var p = ProjectSettings.get_setting(key) + return p if p != null else defaults[key] + + +#endregion diff --git a/addons/popochiu/editor/config/config.gd.uid b/addons/popochiu/editor/config/config.gd.uid new file mode 100644 index 0000000..8eb4eb8 --- /dev/null +++ b/addons/popochiu/editor/config/config.gd.uid @@ -0,0 +1 @@ +uid://blq0g140jdg7d diff --git a/addons/popochiu/editor/config/editor_config.gd b/addons/popochiu/editor/config/editor_config.gd new file mode 100644 index 0000000..b44c8ed --- /dev/null +++ b/addons/popochiu/editor/config/editor_config.gd @@ -0,0 +1,128 @@ +@tool +class_name PopochiuEditorConfig +extends RefCounted + +enum Icons { COLLAPSED, EXPANDED } + +# ASEPRITE IMPORTER -------------------------------------------------------------------------------- +const ASEPRITE_IMPORTER_ENABLED = "popochiu/import/aseprite/enable_aseprite_importer" +const ASEPRITE_COMMAND_PATH = "popochiu/import/aseprite/command_path" +const ASEPRITE_REMOVE_JSON_FILE = "popochiu/import/aseprite/remove_json_file" + +# GIZMOS ------------------------------------------------------------------------------------------- +const GIZMOS_FONT_SIZE = "popochiu/gizmos/font_size" +const GIZMOS_BASELINE_COLOR = "popochiu/gizmos/baseline_color" +const GIZMOS_WALK_TO_POINT_COLOR = "popochiu/gizmos/walk_to_point_color" +const GIZMOS_LOOK_AT_POINT_COLOR = "popochiu/gizmos/look_at_point_color" +const GIZMOS_DIALOG_POS_COLOR = "popochiu/gizmos/dialog_position_color" +const GIZMOS_COLOR_TOOLBAR_BUTTONS = "popochiu/gizmos/apply_colors_to_toolbar_buttons" +const GIZMOS_HANDLER_SIZE = "popochiu/gizmos/handler_size" +const GIZMOS_SHOW_CONNECTORS = "popochiu/gizmos/show_connectors" +const GIZMOS_SHOW_OUTLINE = "popochiu/gizmos/show_handler_outline" +const GIZMOS_SHOW_NODE_NAME = "popochiu/gizmos/show_node_name" +const GIZMOS_ALWAYS_SHOW_WA = "popochiu/gizmos/always_show_walkable_areas" + +# Settings default values +static var defaults := { + ASEPRITE_IMPORTER_ENABLED: false, + ASEPRITE_COMMAND_PATH: _default_aseprite_command(), + ASEPRITE_REMOVE_JSON_FILE: true, + GIZMOS_FONT_SIZE: _default_font_size(), + GIZMOS_BASELINE_COLOR: Color.CYAN, + GIZMOS_WALK_TO_POINT_COLOR: Color.GREEN, + GIZMOS_LOOK_AT_POINT_COLOR: Color.RED, + GIZMOS_DIALOG_POS_COLOR: Color.MAGENTA, + GIZMOS_COLOR_TOOLBAR_BUTTONS: true, + GIZMOS_HANDLER_SIZE: 32, + GIZMOS_SHOW_CONNECTORS: true, + GIZMOS_SHOW_OUTLINE: true, + GIZMOS_SHOW_NODE_NAME: true, + GIZMOS_ALWAYS_SHOW_WA: false, +} + +static var editor_settings: EditorSettings + + +#region Public ##################################################################################### +static func initialize_editor_settings(): + editor_settings = EditorInterface.get_editor_settings() + + # Aseprite importer + _initialize_editor_setting(ASEPRITE_IMPORTER_ENABLED, TYPE_BOOL) + _initialize_editor_setting(ASEPRITE_COMMAND_PATH, TYPE_STRING) + _initialize_editor_setting(ASEPRITE_REMOVE_JSON_FILE, TYPE_BOOL) + # Gizmos + _initialize_editor_setting(GIZMOS_BASELINE_COLOR, TYPE_COLOR) + _initialize_editor_setting(GIZMOS_WALK_TO_POINT_COLOR, TYPE_COLOR) + _initialize_editor_setting(GIZMOS_LOOK_AT_POINT_COLOR, TYPE_COLOR) + _initialize_editor_setting(GIZMOS_DIALOG_POS_COLOR, TYPE_COLOR) + _initialize_editor_setting(GIZMOS_COLOR_TOOLBAR_BUTTONS, TYPE_BOOL) + _initialize_editor_setting(GIZMOS_HANDLER_SIZE, TYPE_INT, PROPERTY_HINT_RANGE, "4,64") + _initialize_editor_setting(GIZMOS_FONT_SIZE, TYPE_INT, PROPERTY_HINT_RANGE, "4,64") + _initialize_editor_setting(GIZMOS_SHOW_CONNECTORS, TYPE_BOOL) + _initialize_editor_setting(GIZMOS_SHOW_OUTLINE, TYPE_BOOL) + _initialize_editor_setting(GIZMOS_SHOW_NODE_NAME, TYPE_BOOL) + _initialize_editor_setting(GIZMOS_ALWAYS_SHOW_WA, TYPE_BOOL) + + +static func get_icon(icon: Icons) -> Texture2D: + match icon: + Icons.COLLAPSED: + return EditorInterface.get_base_control().get_theme_icon( + "GuiTreeArrowRight", "EditorIcons" + ) + Icons.EXPANDED: + return EditorInterface.get_base_control().get_theme_icon( + "GuiTreeArrowDown", "EditorIcons" + ) + + return null + + +# ASEPRITE IMPORTER -------------------------------------------------------------------------------- +static func aseprite_importer_enabled() -> bool: + return get_editor_setting(ASEPRITE_IMPORTER_ENABLED) + + +static func get_command() -> String: + return get_editor_setting(ASEPRITE_COMMAND_PATH) + + +static func should_remove_source_files() -> bool: + return get_editor_setting(ASEPRITE_REMOVE_JSON_FILE) + +#endregion + + +#region Private #################################################################################### +static func _default_aseprite_command() -> String: + return 'aseprite' + + +static func _default_font_size() -> int: + if Engine.is_editor_hint(): + return EditorInterface.get_editor_theme().default_font_size + return 16 + + +static func _initialize_editor_setting( + key: String, type: int, hint: int = PROPERTY_HINT_NONE, hint_string : String = "" +) -> void: + if editor_settings.has_setting(key): return + + editor_settings.set_setting(key, defaults[key]) + editor_settings.set_initial_value(key, defaults[key], false) + editor_settings.add_property_info({ + "name": key, + "type": type, + "hint": hint, + "hint_string": hint_string + }) + + +static func get_editor_setting(key: String): + var e = editor_settings.get_setting(key) + return e if e != null else defaults[e] + + +#endregion diff --git a/addons/popochiu/editor/config/editor_config.gd.uid b/addons/popochiu/editor/config/editor_config.gd.uid new file mode 100644 index 0000000..74b0622 --- /dev/null +++ b/addons/popochiu/editor/config/editor_config.gd.uid @@ -0,0 +1 @@ +uid://c2xn0h6paw2xy diff --git a/addons/popochiu/editor/config/local_obj_config.gd b/addons/popochiu/editor/config/local_obj_config.gd new file mode 100644 index 0000000..0b4eb39 --- /dev/null +++ b/addons/popochiu/editor/config/local_obj_config.gd @@ -0,0 +1,70 @@ +@tool +extends RefCounted + + +const LOCAL_OBJ_CONFIG_META_NAME = "_popochiu_aseprite_config_" +const LOCAL_OBJ_CONFIG_MARKER = "popochiu_aseprite_config" +const SEPARATOR = "|=" + + + +# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PUBLIC ░░░░ +static func encode(object: Dictionary): + var text = "%s\n" % LOCAL_OBJ_CONFIG_MARKER + + for prop in object: + text += "%s%s%s\n" % [prop, SEPARATOR, object[prop]] + + return Marshalls.utf8_to_base64(text) + + +static func decode(string: String): + var decoded = _decode_base64(string) + if not _is_valid_config(decoded): + return null + + print(decoded) + + var cfg = decoded.split("\n") + var config = {} + for c in cfg: + var parts = c.split(SEPARATOR, 1) + if parts.size() == 2: + var key = parts[0].strip_edges() + var value = parts[1].strip_edges() + + #Convert bool properties + if key in ["only_visible_layers", "wipe_old_anims", "op_exp"]: + match value: + "True": + config[key] = true + "False": + config[key] = false + _: + config[key] = false + else: + config[key] = value + + return config + + +static func load_config(node:Node): + # Check if node is not null to avoid showing error messages in Output when inspecting nodes in + # the Debugger + if node and node.has_meta(LOCAL_OBJ_CONFIG_META_NAME): + return node.get_meta(LOCAL_OBJ_CONFIG_META_NAME) + + +static func save_config(node:Node, cfg:Dictionary): + node.set_meta(LOCAL_OBJ_CONFIG_META_NAME, cfg) + + +# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PRIVATE ░░░░ +static func _decode_base64(string: String): + if string != "": + return Marshalls.base64_to_utf8(string) + return null + + +static func _is_valid_config(cfg) -> bool: + return cfg != null and cfg.begins_with(LOCAL_OBJ_CONFIG_MARKER) diff --git a/addons/popochiu/editor/config/local_obj_config.gd.uid b/addons/popochiu/editor/config/local_obj_config.gd.uid new file mode 100644 index 0000000..ecbb848 --- /dev/null +++ b/addons/popochiu/editor/config/local_obj_config.gd.uid @@ -0,0 +1 @@ +uid://d26rqfocnhh7v diff --git a/addons/popochiu/editor/config/result_codes.gd b/addons/popochiu/editor/config/result_codes.gd new file mode 100644 index 0000000..a30ee3d --- /dev/null +++ b/addons/popochiu/editor/config/result_codes.gd @@ -0,0 +1,75 @@ +@tool +extends RefCounted +class_name ResultCodes + +enum { + ## Base codes + FAILURE, # generic failure state + SUCCESS, # generic success state + ## Aseprite importer errors + ERR_ASEPRITE_CMD_NOT_FULL_PATH, + ERR_ASEPRITE_CMD_NOT_FOUND, + ERR_SOURCE_FILE_NOT_FOUND, + ERR_OUTPUT_FOLDER_NOT_FOUND, + ERR_ASEPRITE_EXPORT_FAILED, + ERR_UNKNOWN_EXPORT_MODE, + ERR_NO_VALID_LAYERS_FOUND, + ERR_INVALID_ASEPRITE_SPRITESHEET, + ERR_NO_ANIMATION_PLAYER_FOUND, + ERR_NO_SPRITE_FOUND, + ERR_UNNAMED_TAG_DETECTED, + ERR_TAGS_OPTIONS_ARRAY_EMPTY, + ## Popochiu Object factories errors + ERR_CANT_CREATE_OBJ_FOLDER, + ERR_CANT_CREATE_OBJ_STATE, + ERR_CANT_OPEN_OBJ_SCRIPT_TEMPLATE, + ERR_CANT_CREATE_OBJ_SCRIPT, + ERR_CANT_SAVE_OBJ_SCENE, + ERR_CANT_SAVE_OBJ_RESOURCE, +} + + +# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PUBLIC ░░░░ +static func get_error_message(code: int): + ## TODO: these messages are a bit dull, having params would be better. + ## Maybe add a param argument + match code: + # Aseprite importers error messages + ERR_ASEPRITE_CMD_NOT_FULL_PATH: + return "Aseprite command not found at given path. Please check \"Editor Settings > Popochiu > Import > Command Path\" to hold the FULL path to a valid Aseprite executable." + ERR_ASEPRITE_CMD_NOT_FOUND: + return "Aseprite command failed. Please, check if the right command is in your PATH or configured through \"Editor Settings > Popochiu > Import > Command Path\"." + ERR_SOURCE_FILE_NOT_FOUND: + return "Source file does not exist" + ERR_OUTPUT_FOLDER_NOT_FOUND: + return "Output location does not exist" + ERR_ASEPRITE_EXPORT_FAILED: + return "Unable to import file" + ERR_INVALID_ASEPRITE_SPRITESHEET: + return "Aseprite generated invalid data file" + ERR_NO_VALID_LAYERS_FOUND: + return "No valid layers found" + ERR_NO_ANIMATION_PLAYER_FOUND: + return "No AnimationPlayer found in target node" + ERR_NO_SPRITE_FOUND: + return "No sprite found in target node" + ERR_UNNAMED_TAG_DETECTED: + return "Unnamed tag detected" + ERR_TAGS_OPTIONS_ARRAY_EMPTY: + return "Tags options array is empty" + # Popochiu object factories error messages + ERR_CANT_CREATE_OBJ_FOLDER: + return "Can't create folder to host new Popochiu object" + ERR_CANT_CREATE_OBJ_STATE: + return "Can't create new Popochiu object's state resource (_state.tres, _state.gd)" + ERR_CANT_OPEN_OBJ_SCRIPT_TEMPLATE: + return "Can't open script template for new Popochiu object" + ERR_CANT_CREATE_OBJ_SCRIPT: + return "Can't create new Popochiu object's script file (.gd)" + ERR_CANT_SAVE_OBJ_SCENE: + return "Can't create new Popochiu object's scene (.tscn)" + ERR_CANT_SAVE_OBJ_RESOURCE: + return "Can't create new Popochiu object's resource (.tres)" + # Generic error message + _: + return "Import failed with code %d" % code diff --git a/addons/popochiu/editor/config/result_codes.gd.uid b/addons/popochiu/editor/config/result_codes.gd.uid new file mode 100644 index 0000000..1348147 --- /dev/null +++ b/addons/popochiu/editor/config/result_codes.gd.uid @@ -0,0 +1 @@ +uid://cbxik5o1u00hf diff --git a/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd b/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd new file mode 100644 index 0000000..93e11a0 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd @@ -0,0 +1,237 @@ +extends RefCounted + +const BASE_STATE_TEMPLATE := "res://addons/popochiu/engine/templates/%s_state_template.gd" +const BASE_SCRIPT_TEMPLATE := "res://addons/popochiu/engine/templates/%s_template.gd" +const BASE_SCENE_PATH := "res://addons/popochiu/engine/objects/%s/popochiu_%s.tscn" +const EMPTY_SCRIPT := "res://addons/popochiu/engine/templates/empty_script_template.gd" + +# The following variables are setup on creation Names variants and name parameter passed to the +# create method. +var _path_template := "" # always set by child class +var _snake_name := "" +var _pascal_name := "" +var _path_base := "" +var _path_scene = "" +var _path_resource = "" +var _path_state = "" +var _path_script := "" +# The following variables are setup by the sub-class constructor to define the type of object to be +# processed +# TODO: reduce this to just "type", too much redundancy +var _type := -1 +var _type_label := "" +var _type_target := "" +var _type_method: Callable +# The following variables are references to the elements generated for the creation of the new +# Popochiu object, such as resources, scenes, scripts, state scripts, etc +var _scene: Node +var _resource: Resource +var _state_resource: Resource +var _script: Resource + + +#region Public ##################################################################################### +func get_obj_scene() -> Node: + return _scene + + +func get_snake_name() -> String: + return _snake_name + + +func get_obj_resource() -> Resource: + return _resource + + +func get_state_resource() -> Resource: + return _state_resource + + +func get_obj_script() -> Resource: + return _script + + +func get_scene_path() -> String: + return _path_scene + + +func get_type() -> int: + return _type + + +func get_type_method() -> Callable: + return _type_method + + +#endregion + +#region Private #################################################################################### +func _setup_name(obj_name: String) -> void: + _pascal_name = obj_name.to_pascal_case() + _snake_name = obj_name.to_snake_case() + _path_base = _path_template % [_snake_name, _snake_name] + _path_script = _path_base + ".gd" + _path_state = _path_base + "_state.gd" + _path_resource = _path_base + ".tres" + _path_scene = _path_base + ".tscn" + + +func _create_obj_folder() -> int: + # TODO: Remove created files if the creation process failed. + if DirAccess.make_dir_recursive_absolute(_path_base.get_base_dir()) != OK: + PopochiuUtils.print_error( + "Could not create %s directory: %s" % + [_path_base.get_base_dir(), _pascal_name] + ) + return ResultCodes.ERR_CANT_CREATE_OBJ_FOLDER + return ResultCodes.SUCCESS + + +func _create_state_resource() -> int: + var state_template: Script = load( + BASE_STATE_TEMPLATE % _type_label + ).duplicate() + + if ResourceSaver.save(state_template, _path_state) != OK: + PopochiuUtils.print_error( + "Could not create %s state script: %s" % + [_type_label, _pascal_name] + ) + return ResultCodes.FAILURE + + _state_resource = load(_path_state).new() + _state_resource.script_name = _pascal_name + _state_resource.scene = _path_scene + _state_resource.resource_name = _pascal_name + + if ResourceSaver.save(_state_resource, _path_resource) != OK: + PopochiuUtils.print_error( + "Could not create state resource for %s: %s" % + [_type_label, _pascal_name] + ) + return ResultCodes.ERR_CANT_CREATE_OBJ_STATE + + return ResultCodes.SUCCESS + + +func _copy_script_template() -> int: + var _script: Script = load( + BASE_SCRIPT_TEMPLATE % _type_label + ).duplicate() + + if ResourceSaver.save( _script, _path_script) != OK: + PopochiuUtils.print_error( + "Could not create %s script: %s" % + [_type_label, _path_script] + ) + return ResultCodes.ERR_CANT_CREATE_OBJ_SCRIPT + + return ResultCodes.SUCCESS + + +## Create the script for the object based on the template of its type. +func _create_script_from_template() -> int: + var script_template_file = FileAccess.open( + BASE_SCRIPT_TEMPLATE % _type_label, FileAccess.READ + ) + + if script_template_file == null: + PopochiuUtils.print_error( + "Could not read script template from %s" % + [BASE_SCRIPT_TEMPLATE % _type_label] + ) + return ResultCodes.ERR_CANT_OPEN_OBJ_SCRIPT_TEMPLATE + + var new_code: String = script_template_file.get_as_text() + script_template_file.close() + + new_code = new_code.replace( + "%s_state_template" % _type_label, + "%s_%s_state" % [_type_label, _snake_name] + ) + new_code = new_code.replace( + "Data = null", + 'Data = load("%s.tres")' % _path_base + ) + new_code = new_code.replace("PopochiuUtils.e", "E") + + _script = load(EMPTY_SCRIPT).duplicate() + _script.source_code = new_code + + if ResourceSaver.save( _script, _path_script) != OK: + PopochiuUtils.print_error( + "Could not create %s script: %s" % + [_type_label, _path_script] + ) + return ResultCodes.ERR_CANT_CREATE_OBJ_SCRIPT + + return ResultCodes.SUCCESS + + +func _save_obj_scene(obj: Node) -> int: + var packed_scene: PackedScene = PackedScene.new() + packed_scene.pack(obj) + if ResourceSaver.save(packed_scene, _path_scene) != OK: + PopochiuUtils.print_error( + "Could not create %s: %s" % + [_type_label, _path_script] + ) + return ResultCodes.ERR_CANT_SAVE_OBJ_SCENE + # Load the scene to be get by the calling code + # Instancing the created .tscn file fixes #58 + _scene = (load(_path_scene) as PackedScene).instantiate(PackedScene.GEN_EDIT_STATE_INSTANCE) + + return ResultCodes.SUCCESS + + +func _save_obj_resource(obj: Resource) -> int: + if ResourceSaver.save(obj, _path_resource) != OK: + PopochiuUtils.print_error( + "Could not create %s: %s" % + [_type_label, _pascal_name] + ) + return ResultCodes.ERR_CANT_SAVE_OBJ_RESOURCE + + # Load the resource to be get by the calling code + _resource = load(_path_resource) + + return ResultCodes.SUCCESS + + +## Makes a copy of the base scene for the object (e.g. popochiu_room.tscn, +## popochiu_inventory_item.tscn, popochiu_prop.tscn). +func _load_obj_base_scene() -> Node: + var obj = ( + load(BASE_SCENE_PATH % [_type_label, _type_label]) as PackedScene + ).instantiate(PackedScene.GEN_EDIT_STATE_MAIN_INHERITED) + + # The script is assigned first so that other properties will not be + # overwritten by that assignment. + if _script != null: + obj.set_script(load(_path_script)) + + return obj + + +func _add_resource_to_popochiu() -> void: + # Add the created obj to Popochiu's correct list + var resource := ResourceLoader.load(_path_resource) + if PopochiuResources.set_data_value( + _type_target, + resource.script_name, + resource.resource_path + ) != OK: + PopochiuUtils.print_error( + "Could not add the created %s to Popochiu: %s" % + [_type_label, _pascal_name] + ) + return + + # Add the object to the proper singleton + PopochiuResources.update_autoloads(true) + + # Update the related list in the dock + PopochiuEditorHelper.signal_bus.main_object_added.emit(_type, _pascal_name) + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd.uid b/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd.uid new file mode 100644 index 0000000..76a5df5 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd.uid @@ -0,0 +1 @@ +uid://dsauwqcvbelb1 diff --git a/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd b/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd new file mode 100644 index 0000000..270499e --- /dev/null +++ b/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd @@ -0,0 +1,98 @@ +class_name PopochiuRoomObjFactory +extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd" + +const CHILD_VISIBLE_IN_ROOM_META = "_popochiu_obj_factory_child_visible_in_room_" + +# The following variable is setup by the sub-class constructor to +# define the holder node for the new room object (Props, Hotspots, etc) +var _obj_room_group := "" +# The following variables are setup by the _setup_room method +var _room: Node2D = null +var _room_path := "" +var _room_dir := "" + + +#region Public ##################################################################################### +func get_group() -> String: + return _obj_room_group + + +func create_from(node: Node, room: PopochiuRoom) -> int: + _setup_room(room) + _setup_name(node.name) + + var param := _get_param(node) + param.room = room + param.obj_name = node.name + param.is_visible = node.visible + param.should_setup_room_and_name = false + param.should_add_to_room = false + param.should_create_script = !FileAccess.file_exists(_path_script) + + return call("create", param) + + +func get_new_instance() -> PopochiuRoomObjFactory: + return new() + + +#endregion + +#region Private #################################################################################### +func _setup_room(room: PopochiuRoom) -> void: + _room = room + _room_path = _room.scene_file_path + _room_dir = _room_path.get_base_dir() + # Adding room path to room object path template + _path_template = _room_dir + _path_template + + +# This function adds a child to the new object scene +# marking it as "visible in room scene" +func _add_visible_child(child: Node) -> void: + child.set_meta(CHILD_VISIBLE_IN_ROOM_META, true) + _scene.add_child(child) + + +func _add_resource_to_room() -> void: + # Add the newly created obj to its room + _room.get_node(_obj_room_group).add_child(_scene) + + # Set the ownership for the node plus all it's children + # (this address colliders, polygons, etc) + _scene.owner = _room + for child in _scene.get_children(): + if child.has_meta(CHILD_VISIBLE_IN_ROOM_META): + child.owner = _room + child.remove_meta(CHILD_VISIBLE_IN_ROOM_META) + + # Center the object on the scene + _scene.position = Vector2( + ProjectSettings.get_setting(PopochiuResources.DISPLAY_WIDTH), + ProjectSettings.get_setting(PopochiuResources.DISPLAY_HEIGHT) + ) / 2.0 + + # Save the room scene (it's open in the editor) + EditorInterface.save_scene() + + +func _get_param(_node: Node) -> PopochiuRoomObjFactoryParam: + return PopochiuRoomObjFactoryParam.new() + + +#endregion + +#region Subclass ################################################################################### +class PopochiuRoomObjFactoryParam extends RefCounted: + var obj_name: String + var room: PopochiuRoom + var is_visible := true + var should_setup_room_and_name := true + var should_create_script := true + var should_add_to_room := true + ## Property used to store the vectors stored in the [member CollisionPolygon2D.polygon] for + ## [PopochiuProp], [PopochiuHotspot], and [PopochiuRegion]. + var interaction_polygon := PackedVector2Array() + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd.uid b/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd.uid new file mode 100644 index 0000000..c812ab3 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd.uid @@ -0,0 +1 @@ +uid://ch67numd388l diff --git a/addons/popochiu/editor/factories/factory_popochiu_character.gd b/addons/popochiu/editor/factories/factory_popochiu_character.gd new file mode 100644 index 0000000..30475f4 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_character.gd @@ -0,0 +1,64 @@ +extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd" +class_name PopochiuCharacterFactory + +#region Godot ###################################################################################### +func _init() -> void: + _type = PopochiuResources.Types.CHARACTER + _type_label = "character" + _type_target = "characters" + _path_template = PopochiuResources.CHARACTERS_PATH.path_join("%s/character_%s") + + +#endregion + +#region Public ##################################################################################### +func create(obj_name: String, is_pc := false) -> int: + # If everything goes well, this won't change. + var result_code := ResultCodes.SUCCESS + + # Setup the class variables that depends on the object name + _setup_name(obj_name) + + # Create the folder + result_code = _create_obj_folder() + if result_code != ResultCodes.SUCCESS: return result_code + + # Create the state Resource and a script + # so devs can add extra properties to that state + result_code = _create_state_resource() + if result_code != ResultCodes.SUCCESS: return result_code + + # Create the script populating the template with the right references + result_code = _create_script_from_template() + if result_code != ResultCodes.SUCCESS: return result_code + + # ---- LOCAL CODE ------------------------------------------------------------------------------ + # Create the instance + var new_obj: PopochiuCharacter = _load_obj_base_scene() + + new_obj.name = "Character" + _pascal_name + new_obj.script_name = _pascal_name + new_obj.description = _pascal_name.capitalize() + new_obj.cursor = PopochiuResources.CURSOR_TYPE.TALK + + if PopochiuConfig.is_pixel_art_textures(): + new_obj.get_node("Sprite2D").texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + # Save the scene (.tscn) + result_code = _save_obj_scene(new_obj) + if result_code != ResultCodes.SUCCESS: return result_code + + # Add the object to Popochiu dock list, plus open it in the editor + _add_resource_to_popochiu() + + # ---- LOCAL CODE ------------------------------------------------------------------------------ + # Set as PC + if is_pc: + PopochiuEditorHelper.signal_bus.pc_changed.emit(new_obj.script_name) + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + return result_code + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_popochiu_character.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_character.gd.uid new file mode 100644 index 0000000..712696e --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_character.gd.uid @@ -0,0 +1 @@ +uid://dstbnm6v0t6ot diff --git a/addons/popochiu/editor/factories/factory_popochiu_dialog.gd b/addons/popochiu/editor/factories/factory_popochiu_dialog.gd new file mode 100644 index 0000000..4b8f88b --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_dialog.gd @@ -0,0 +1,49 @@ +extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd" +class_name PopochiuDialogFactory + +#region Godot ###################################################################################### +func _init() -> void: + _type = PopochiuResources.Types.DIALOG + _type_label = "dialog" + _type_target = "dialogs" + _path_template = PopochiuResources.DIALOGS_PATH.path_join("%s/dialog_%s") + + +#endregion + +#region Public ##################################################################################### +func create(obj_name: String) -> int: + # If everything goes well, this won't change. + var result_code := ResultCodes.SUCCESS + + # Setup the class variables that depends on the object name + _setup_name(obj_name) + + # Create the folder + result_code = _create_obj_folder() + if result_code != ResultCodes.SUCCESS: return result_code + + # Create the script + result_code = _copy_script_template() + if result_code != ResultCodes.SUCCESS: return result_code + + # ---- LOCAL CODE ------------------------------------------------------------------------------ + # Create the resource (dialogs are not scenes) + var new_obj := PopochiuDialog.new() + new_obj.set_script(load(_path_script)) + + new_obj.script_name = _pascal_name + new_obj.resource_name = _pascal_name + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + # Save resource (dialogs are not scenes) + result_code = _save_obj_resource(new_obj) + if result_code != ResultCodes.SUCCESS: return result_code + + # Add the object to Popochiu dock list, plus open it in the editor + _add_resource_to_popochiu() + + return result_code + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_popochiu_dialog.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_dialog.gd.uid new file mode 100644 index 0000000..38c79df --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_dialog.gd.uid @@ -0,0 +1 @@ +uid://ddk6pykrms2tq diff --git a/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd b/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd new file mode 100644 index 0000000..d42162a --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd @@ -0,0 +1,76 @@ +class_name PopochiuHotspotFactory +extends PopochiuRoomObjFactory + + +#region Godot ###################################################################################### +func _init() -> void: + _type = PopochiuResources.Types.HOTSPOT + _type_label = "hotspot" + _type_method = PopochiuEditorHelper.is_hotspot + _obj_room_group = "Hotspots" + _path_template = "/hotspots/%s/hotspot_%s" + + +#endregion + +#region Public ##################################################################################### +func create(param: PopochiuHotspotFactoryParam) -> int: + # If everything goes well, this won't change. + var result_code := ResultCodes.SUCCESS + + if param.should_setup_room_and_name: + _setup_room(param.room) + _setup_name(param.obj_name) + + # Create the folder + result_code = _create_obj_folder() + if result_code != ResultCodes.SUCCESS: return result_code + + # Create the script + if param.should_create_script: + result_code = _copy_script_template() + if result_code != ResultCodes.SUCCESS: return result_code + + # ---- LOCAL CODE ------------------------------------------------------------------------------ + # Create the instance + var new_obj: PopochiuHotspot = _load_obj_base_scene() + + new_obj.set_script(ResourceLoader.load(_path_script)) + + new_obj.name = _pascal_name + new_obj.script_name = _pascal_name + new_obj.description = _snake_name.capitalize() + new_obj.cursor = PopochiuResources.CURSOR_TYPE.ACTIVE + new_obj.interaction_polygon = param.interaction_polygon + + # Save the hotspot scene (.tscn) and put it into _scene class property + result_code = _save_obj_scene(new_obj) + if result_code != ResultCodes.SUCCESS: return result_code + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + if param.should_add_to_room: + # Add the object to its room + _add_resource_to_room() + + return result_code + + +#endregion + +#region Private #################################################################################### +func _get_param(node: Node) -> PopochiuRoomObjFactoryParam: + var param := PopochiuHotspotFactoryParam.new() + param.is_interactive = node.clickable + # TODO: Remove this line once the last gizmos PR is merged + param.interaction_polygon = node.interaction_polygon + return param + + +#endregion + +#region Subclass ################################################################################### +class PopochiuHotspotFactoryParam extends PopochiuRoomObjFactory.PopochiuRoomObjFactoryParam: + var is_interactive := true + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd.uid new file mode 100644 index 0000000..7cf171a --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd.uid @@ -0,0 +1 @@ +uid://bcnd7an67ulyf diff --git a/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd b/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd new file mode 100644 index 0000000..8770e85 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd @@ -0,0 +1,60 @@ +extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd" +class_name PopochiuInventoryItemFactory + +#region Godot ###################################################################################### +func _init() -> void: + _type = PopochiuResources.Types.INVENTORY_ITEM + _type_label = "inventory_item" + _type_target = "inventory_items" + _path_template = PopochiuResources.INVENTORY_ITEMS_PATH.path_join("%s/inventory_item_%s") + + +#endregion + +#region Public ##################################################################################### +func create(obj_name: String) -> int: + # If everything goes well, this won't change. + var result_code := ResultCodes.SUCCESS + + # Setup the class variables that depends on the object name + _setup_name(obj_name) + + # Create the folder + result_code = _create_obj_folder() + if result_code != ResultCodes.SUCCESS: return result_code + + # Create the state Resource and a script + # so devs can add extra properties to that state + result_code = _create_state_resource() + if result_code != ResultCodes.SUCCESS: return result_code + + # Create the script populating the template with the right references + result_code = _create_script_from_template() + if result_code != ResultCodes.SUCCESS: return result_code + + # ---- LOCAL CODE ------------------------------------------------------------------------------ + # Create the instance + var new_obj: PopochiuInventoryItem = _load_obj_base_scene() + + new_obj.name = "Item" + _pascal_name + new_obj.script_name = _pascal_name + new_obj.description = _pascal_name.capitalize() + new_obj.cursor = PopochiuResources.CURSOR_TYPE.USE + new_obj.size_flags_vertical = new_obj.SIZE_SHRINK_CENTER + + if PopochiuConfig.is_pixel_art_textures(): + new_obj.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST + + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + # Save the scene (.tscn) + result_code = _save_obj_scene(new_obj) + if result_code != ResultCodes.SUCCESS: return result_code + + # Add the object to Popochiu dock list, plus open it in the editor + _add_resource_to_popochiu() + + return result_code + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd.uid new file mode 100644 index 0000000..e7b88c5 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd.uid @@ -0,0 +1 @@ +uid://bym4xs81a2ph4 diff --git a/addons/popochiu/editor/factories/factory_popochiu_marker.gd b/addons/popochiu/editor/factories/factory_popochiu_marker.gd new file mode 100644 index 0000000..61a95c7 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_marker.gd @@ -0,0 +1,44 @@ +class_name PopochiuMarkerFactory +extends PopochiuRoomObjFactory + +#region Godot ###################################################################################### +func _init() -> void: + _type = PopochiuResources.Types.MARKER + _type_label = "marker" + _type_method = PopochiuEditorHelper.is_marker + _obj_room_group = "Markers" + _path_template = "/markers/%s/marker_%s" + + +#endregion +#region Public ##################################################################################### +func create(param: PopochiuRoomObjFactoryParam) -> int: + # If everything goes well, this won't change. + var result_code := ResultCodes.SUCCESS + + if param.should_setup_room_and_name: + _setup_room(param.room) + _setup_name(param.obj_name) + + # Create the folder + result_code = _create_obj_folder() + if result_code != ResultCodes.SUCCESS: return result_code + + # ---- LOCAL CODE ------------------------------------------------------------------------------ + # Create the instance + var new_obj: Marker2D = Marker2D.new() + new_obj.name = _pascal_name + + # Save the marker scene (.tscn) and put it into _scene class property + result_code = _save_obj_scene(new_obj) + if result_code != ResultCodes.SUCCESS: return result_code + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + if param.should_add_to_room: + # Add the object to its room + _add_resource_to_room() + + return result_code + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_popochiu_marker.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_marker.gd.uid new file mode 100644 index 0000000..5cee6c8 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_marker.gd.uid @@ -0,0 +1 @@ +uid://ckjo1lcmxjlh6 diff --git a/addons/popochiu/editor/factories/factory_popochiu_prop.gd b/addons/popochiu/editor/factories/factory_popochiu_prop.gd new file mode 100644 index 0000000..2515ce9 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_prop.gd @@ -0,0 +1,86 @@ +class_name PopochiuPropFactory +extends PopochiuRoomObjFactory + + +#region Godot ###################################################################################### +func _init() -> void: + _type = PopochiuResources.Types.PROP + _type_label = "prop" + _type_method = PopochiuEditorHelper.is_prop + _obj_room_group = "Props" + _path_template = "/props/%s/prop_%s" + + +#endregion + +#region Public ##################################################################################### +func create(param: PopochiuPropFactoryParam) -> int: + # If everything goes well, this won't change. + var result_code := ResultCodes.SUCCESS + + if param.should_setup_room_and_name: + _setup_room(param.room) + _setup_name(param.obj_name) + + # Create the folder + result_code = _create_obj_folder() + if result_code != ResultCodes.SUCCESS: return result_code + + # Create the script (if the prop is interactive) + if param.should_create_script: + result_code = _copy_script_template() + if result_code != ResultCodes.SUCCESS: return result_code + + # ---- LOCAL CODE ------------------------------------------------------------------------------ + # Create the instance + var new_obj: PopochiuProp = _load_obj_base_scene() + + new_obj.set_script(ResourceLoader.load(_path_script)) + + new_obj.name = _pascal_name + new_obj.script_name = _pascal_name + new_obj.description = _snake_name.capitalize() + new_obj.cursor = PopochiuResources.CURSOR_TYPE.ACTIVE + new_obj.clickable = param.is_interactive + new_obj.visible = param.is_visible + new_obj.interaction_polygon = param.interaction_polygon + + if PopochiuConfig.is_pixel_art_textures(): + new_obj.get_node("Sprite2D").texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST + + if _snake_name in ["bg", "background"]: + new_obj.baseline =\ + -ProjectSettings.get_setting(PopochiuResources.DISPLAY_HEIGHT) / 2.0 + new_obj.z_index = -1 + + # Save the scene (.tscn) and put it into _scene class property + result_code = _save_obj_scene(new_obj) + if result_code != ResultCodes.SUCCESS: return result_code + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + if param.should_add_to_room: + # Add the object to its room + _add_resource_to_room() + + return result_code + + +#endregion + +#region Private #################################################################################### +func _get_param(node: Node) -> PopochiuRoomObjFactoryParam: + var param := PopochiuPropFactoryParam.new() + param.is_interactive = node.clickable + # TODO: Remove this line once the last gizmos PR is merged + param.interaction_polygon = node.interaction_polygon + return param + + +#endregion + +#region Subclass ################################################################################### +class PopochiuPropFactoryParam extends PopochiuRoomObjFactory.PopochiuRoomObjFactoryParam: + var is_interactive := false + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_popochiu_prop.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_prop.gd.uid new file mode 100644 index 0000000..c119e78 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_prop.gd.uid @@ -0,0 +1 @@ +uid://b8ajrxi1mp5up diff --git a/addons/popochiu/editor/factories/factory_popochiu_region.gd b/addons/popochiu/editor/factories/factory_popochiu_region.gd new file mode 100644 index 0000000..d46458c --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_region.gd @@ -0,0 +1,71 @@ +class_name PopochiuRegionFactory +extends PopochiuRoomObjFactory + +#region Godot ###################################################################################### +func _init() -> void: + _type = PopochiuResources.Types.REGION + _type_label = "region" + _type_method = PopochiuEditorHelper.is_region + _obj_room_group = "Regions" + _path_template = "/regions/%s/region_%s" + + +#endregion + +#region Public ##################################################################################### +func create(param: PopochiuRoomObjFactoryParam) -> int: + # If everything goes well, this won't change. + var result_code := ResultCodes.SUCCESS + + if param.should_setup_room_and_name: + _setup_room(param.room) + _setup_name(param.obj_name) + + # Create the folder + result_code = _create_obj_folder() + if result_code != ResultCodes.SUCCESS: return result_code + + # Create the script + if param.should_create_script: + result_code = _copy_script_template() + if result_code != ResultCodes.SUCCESS: return result_code + + # ---- LOCAL CODE ------------------------------------------------------------------------------ + # Create the instance + var new_obj: PopochiuRegion = _load_obj_base_scene() + new_obj.set_script(ResourceLoader.load(_path_script)) + new_obj.name = _pascal_name + new_obj.script_name = _pascal_name + new_obj.description = _snake_name.capitalize() + new_obj.interaction_polygon = param.interaction_polygon + + # Save the scene (.tscn) and put it into _scene class property + result_code = _save_obj_scene(new_obj) + if result_code != ResultCodes.SUCCESS: return result_code + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + if param.should_add_to_room: + # Add the object to its room + _add_resource_to_room() + + return result_code + + +#endregion + +#region Private #################################################################################### +func _get_param(node: Node) -> PopochiuRoomObjFactoryParam: + var param := PopochiuRegionFactoryParam.new() + param.interaction_polygon = node.interaction_polygon + + return param + + +#endregion + +#region Subclass ################################################################################### +class PopochiuRegionFactoryParam extends PopochiuRoomObjFactory.PopochiuRoomObjFactoryParam: + var should_create_interaction_polygon := true + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_popochiu_region.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_region.gd.uid new file mode 100644 index 0000000..c8aa0bc --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_region.gd.uid @@ -0,0 +1 @@ +uid://dphtxosh168sb diff --git a/addons/popochiu/editor/factories/factory_popochiu_room.gd b/addons/popochiu/editor/factories/factory_popochiu_room.gd new file mode 100644 index 0000000..370c688 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_room.gd @@ -0,0 +1,63 @@ +extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd" +class_name PopochiuRoomFactory + +#region Godot ###################################################################################### +func _init() -> void: + _type = PopochiuResources.Types.ROOM + _type_label = "room" + _type_target = "rooms" + _path_template = PopochiuResources.ROOMS_PATH.path_join("%s/room_%s") + + +#endregion + +#region Public ##################################################################################### +func create(obj_name: String, set_as_main := false) -> int: + # If everything goes well, this won't change. + var result_code := ResultCodes.SUCCESS + + # Setup the class variables that depends on the object name + _setup_name(obj_name) + + # Create the folder + result_code = _create_obj_folder() + if result_code != ResultCodes.SUCCESS: return result_code + + # Create the state Resource and a script + # so devs can add extra properties to that state + result_code = _create_state_resource() + if result_code != ResultCodes.SUCCESS: return result_code + + # Create the script populating the template with the right references + result_code = _create_script_from_template() + if result_code != ResultCodes.SUCCESS: return result_code + + # ---- LOCAL CODE ------------------------------------------------------------------------------ + # Create the instance + var new_obj: PopochiuRoom = _load_obj_base_scene() + + new_obj.name = "Room" + _pascal_name + new_obj.script_name = _pascal_name + new_obj.width = ProjectSettings.get_setting(PopochiuResources.DISPLAY_WIDTH) + new_obj.height = ProjectSettings.get_setting(PopochiuResources.DISPLAY_HEIGHT) + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + # Save the scene (.tscn) + result_code = _save_obj_scene(new_obj) + if result_code != ResultCodes.SUCCESS: return result_code + + # Add the object to Popochiu dock list, plus open it in the editor + _add_resource_to_popochiu() + + # ---- LOCAL CODE ------------------------------------------------------------------------------ + # Set as main room + # Changed _set_as_main_check.pressed to _set_as_main_check.button_pressed + # in order to fix #56 + if set_as_main: + PopochiuEditorHelper.signal_bus.main_scene_changed.emit(_scene.scene_file_path) + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + return result_code + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_popochiu_room.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_room.gd.uid new file mode 100644 index 0000000..373b303 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_room.gd.uid @@ -0,0 +1 @@ +uid://b7kd0q631qqt6 diff --git a/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd b/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd new file mode 100644 index 0000000..5d80292 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd @@ -0,0 +1,94 @@ +class_name PopochiuWalkableAreaFactory +extends PopochiuRoomObjFactory + + +#region Godot ###################################################################################### +func _init() -> void: + _type = PopochiuResources.Types.WALKABLE_AREA + _type_label = "walkable_area" + _type_method = PopochiuEditorHelper.is_walkable_area + _obj_room_group = "WalkableAreas" + _path_template = "/walkable_areas/%s/walkable_area_%s" + + +#endregion + +#region Public ##################################################################################### +func create(param: PopochiuWalkableAreaFactoryParam) -> int: + # If everything goes well, this won't change. + var result_code := ResultCodes.SUCCESS + + if param.should_setup_room_and_name: + _setup_room(param.room) + _setup_name(param.obj_name) + + # Create the folder + result_code = _create_obj_folder() + if result_code != ResultCodes.SUCCESS: return result_code + + # Create the script + if param.should_create_script: + result_code = _copy_script_template() + if result_code != ResultCodes.SUCCESS: return result_code + + # ---- LOCAL CODE ------------------------------------------------------------------------------ + # Create the instance + var new_obj: PopochiuWalkableArea = _load_obj_base_scene() + + new_obj.set_script(ResourceLoader.load(_path_script)) + + new_obj.name = _pascal_name + new_obj.script_name = _pascal_name + new_obj.description = _snake_name.capitalize() + + # Find the NavigationRegion2D for the WA and populate it with a default rectangle polygon + var perimeter := new_obj.find_child("Perimeter") + var polygon := NavigationPolygon.new() + polygon.add_outline(PackedVector2Array([ + Vector2(-10, -10), Vector2(10, -10), Vector2(10, 10), Vector2(-10, 10) + ])) + NavigationServer2D.bake_from_source_geometry_data( + polygon, NavigationMeshSourceGeometryData2D.new() + ) + polygon.agent_radius = 0.0 + perimeter.navigation_polygon = polygon + + if not param.navigation_polygon.is_empty(): + new_obj.interaction_polygon = param.navigation_polygon + new_obj.clear_and_bake(perimeter.navigation_polygon) + + # Show the WA perimeter, depending on user prefs + perimeter.visible = PopochiuEditorConfig.get_editor_setting( + PopochiuEditorConfig.GIZMOS_ALWAYS_SHOW_WA + ) + + # Save the scene (.tscn) and put it into _scene class property + result_code = _save_obj_scene(new_obj) + if result_code != ResultCodes.SUCCESS: return result_code + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + if param.should_add_to_room: + # Add the object to its room + _add_resource_to_room() + + return result_code + + +#endregion + +#region Private #################################################################################### +func _get_param(node: Node) -> PopochiuRoomObjFactoryParam: + var param := PopochiuWalkableAreaFactoryParam.new() + param.navigation_polygon = node.interaction_polygon + + return param + + +#endregion + +#region Subclass ################################################################################### +class PopochiuWalkableAreaFactoryParam extends PopochiuRoomObjFactory.PopochiuRoomObjFactoryParam: + var navigation_polygon := [] + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd.uid new file mode 100644 index 0000000..a893887 --- /dev/null +++ b/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd.uid @@ -0,0 +1 @@ +uid://c66i7vwbgxym8 diff --git a/addons/popochiu/editor/gizmos/gizmo2d.gd b/addons/popochiu/editor/gizmos/gizmo2d.gd new file mode 100644 index 0000000..ca95a38 --- /dev/null +++ b/addons/popochiu/editor/gizmos/gizmo2d.gd @@ -0,0 +1,274 @@ +@tool +class_name Gizmo2D +extends RefCounted + +# Gizmo types +enum { + GIZMO_POS, # square marker that represents (x,y) coordinates + GIZMO_HPOS, # vertical line that represents a horizontal coordinate + GIZMO_VPOS # horizontal line that represents a vertical coordinate +} + +# Public vars +# Convenience accessors +var target_node: Node2D: + set = set_target_node, + get = get_target_node +var target_property: String: + set = set_target_property, + get = get_target_property +var position: + get = get_position +# Behavior flags +var show_connector: bool = true # Show gizmo-to-node connectors +var show_outlines: bool = true +var show_target_name: bool = true # Show target node name +var visible: bool = true # Gizmo visibility + +# Private vars +# Context +var _type: int +var _target_node: Node2D +var _target_property: String +# Appearance +var _size: Vector2 # Gizmo width and height +var _color: Color # Gizmo color +var _label: String # A label to be painted near the Gizmo +var _font: Font # Label font +var _font_size: int # Label font size +# State +var _handle: Rect2 # Gizmo handle +var _current_position: Vector2 # The position the gizmo is representing in every moment +var _current_color: Color +var _is_grabbed: bool = false # Gizmo is moving +var _grab_center_pos: Vector2 # Starting center position when grabbing +var _grab_mouse_pos: Vector2 # Starting mouse position when grabbing + + +#region Virtual #################################################################################### + +func _init( + node: Node, + property: String, + label: String, + type: int, +): + _target_node = node + _target_property = property + _type = type + _label = label + + set_theme( + Color.AQUA, + 24, + EditorInterface.get_editor_theme().default_font, + EditorInterface.get_editor_theme().default_font_size + ) + + _current_color = _color + + +#endregion + +#region SetGet ##################################################################################### + +func set_theme( + color: Color, + size: int, + font: Font, + font_size: int +): + _color = color + _size = Vector2(size, size) + _font = font + _font_size = font_size + +func set_target_node(node: Node2D): + _target_node = node + +func get_target_node() -> Node2D: + return _target_node + +func set_target_property(property: String): + _target_property = property + +func get_target_property() -> String: + if _target_property: + return _target_property + return "" + + +#endregion + +#region Private #################################################################################### + +func _draw_outlines(viewport: Control): + viewport.draw_rect( + _handle, + Color.BLACK, false, 4 + ) + + viewport.draw_string_outline( + _font, + _handle.position + Vector2(0, _size.y + 2 + _font.get_ascent(_font_size)), + _label, HORIZONTAL_ALIGNMENT_CENTER, + - 1, + _font_size, + 6, + Color.BLACK + ) + + if show_target_name: + viewport.draw_string_outline( + _font, + _handle.position + Vector2(0, -_font.get_descent(_font_size)), + _target_node.name, + HORIZONTAL_ALIGNMENT_CENTER, + - 1, + _font_size, + 6, + Color.BLACK + ) + +func _draw_gizmo(viewport: Control): + + # Draw the handle (on top of the line, if it's present) + viewport.draw_rect( + _handle, + _current_color + ) + + # Draw gizmo-to-node connector, if active + if show_connector: + viewport.draw_dashed_line( + (_target_node.get_viewport_transform() * _target_node.get_global_transform()).origin, + _handle.get_center(), + _current_color.darkened(0.2), + 2, + 4 + ) + viewport.draw_circle( + _handle.get_center(), + 3, + _current_color.darkened(0.2) + ) + + # Draw the label, if it's set and non empty + if _label: + viewport.draw_string( + _font, + _handle.position + Vector2(0, _size.y + 2 + _font.get_ascent(_font_size)), + _label, HORIZONTAL_ALIGNMENT_CENTER, + - 1, + _font_size, + _current_color + ) + + if show_target_name: + viewport.draw_string( + _font, + _handle.position + Vector2(0, -_font.get_descent(_font_size)), + _target_node.name, + HORIZONTAL_ALIGNMENT_CENTER, + - 1, + _font_size, + _current_color + ) + +func _can_draw(): + return (visible and _target_node != null and _target_node.is_visible_in_tree()) + + +#endregion + +#region Public ##################################################################################### + +func draw(viewport: Control, coord: Variant) -> void: + # Handmade coordinates type overloading + if not (coord is Vector2 or coord is int): + return + # Check if the gizmo can be drawn + if not _can_draw(): + return + + # Coordinates normalization (to vector) for horizontal or vertical gizmos + # Both axis are set to the same value, then ignore one or the other + # depending on the gizmo type + if coord is int: + coord = Vector2(coord, coord) + + # Calculate the GLOBAL coordinates of the center of the square handle + # This only takes into account the node offset discarding its transform basis + # (representing rotation, skew and scale) then it applies the viewport transform + # to take into account the zoom level + var center = _target_node.get_viewport_transform() * (_target_node.get_global_transform().origin + Vector2(coord)) + + # Set handle color + _current_color = _color + # Highlight handle if held by the mouse click + if _is_grabbed: + _current_color = _color.lightened(0.5) + + # Draw an horizontal or vertical line if the gizmo is one-dimensional + match _type: + GIZMO_VPOS: + var viewport_width = EditorInterface.get_editor_viewport_2d().size.x + center.x = viewport_width / 2 + viewport.draw_line( + Vector2(0, center.y), + Vector2(viewport_width, center.y), + _current_color, + 2 + ) + GIZMO_HPOS: + var viewport_height = EditorInterface.get_editor_viewport_2d().size.y + center.y = viewport_height / 2 + viewport.draw_line( + Vector2(center.x, 0), + Vector2(center.x, viewport_height), + _current_color, + 2 + ) + + # Initialize the handle in the right position + _handle = Rect2(center - _size / 2, _size) + + if show_outlines: + _draw_outlines(viewport) + + _draw_gizmo(viewport) + +func drag_to(pos: Vector2): + # Distance between the mouse position and the gizmo center + var d = _grab_center_pos - _grab_mouse_pos + # Gizmo center position in global coordinates + var current_gizmo_pos = pos + d + # Distance between gizmo center position in 2D world node coordinates and + # node position ignoring its transform basis (representing rotation, skew and scale) + _current_position = _target_node.get_viewport_transform().affine_inverse() * current_gizmo_pos - (target_node.get_global_transform().origin) + +func release(): + _is_grabbed = false + +func grab(pos: Vector2): + _is_grabbed = true + _grab_mouse_pos = pos + _grab_center_pos = _handle.get_center() + +func cancel(): + _is_grabbed = false + +func has_point(pos: Vector2): + return visible and _handle.abs().has_point(pos) + +func get_position(): + match _type: + GIZMO_POS: + return _current_position + GIZMO_HPOS: + return _current_position.x + GIZMO_VPOS: + return _current_position.y + + +#endregion diff --git a/addons/popochiu/editor/gizmos/gizmo2d.gd.uid b/addons/popochiu/editor/gizmos/gizmo2d.gd.uid new file mode 100644 index 0000000..04dbb99 --- /dev/null +++ b/addons/popochiu/editor/gizmos/gizmo2d.gd.uid @@ -0,0 +1 @@ +uid://71g54gbvyv7l diff --git a/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd b/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd new file mode 100644 index 0000000..b4bd8ba --- /dev/null +++ b/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd @@ -0,0 +1,278 @@ +@tool +class_name PopochiuGizmoClickablePlugin +extends EditorPlugin + +# TODO: move these out of the plugin and into Popochiu (enums) or PopochiuClickable +enum { + WALK_TO_POINT, + LOOK_AT_POINT, + BASELINE, + DIALOG_POS +} + +# Private vars +# State +var _target_node: Node2D +var _undo: EditorUndoRedoManager +var _gizmos: Array +var _active_gizmos: Array +var _grabbed_gizmo: Gizmo2D + + +#region Godot ###################################################################################### + +func _enter_tree() -> void: + # TODO: remove the following 2 lines when the plugin is connected to the appropriate signal + # e.g. popochiu_ready + PopochiuEditorConfig.initialize_editor_settings() + PopochiuConfig.initialize_project_settings() + + # Initialization of the plugin goes here. + _undo = get_undo_redo() + _gizmos.insert(WALK_TO_POINT, _init_popochiu_gizmo(WALK_TO_POINT)) + _gizmos.insert(LOOK_AT_POINT, _init_popochiu_gizmo(LOOK_AT_POINT)) + _gizmos.insert(BASELINE, _init_popochiu_gizmo(BASELINE)) + _gizmos.insert(DIALOG_POS, _init_popochiu_gizmo(DIALOG_POS)) + + EditorInterface.get_editor_settings().settings_changed.connect(_on_gizmo_settings_changed) + PopochiuEditorHelper.signal_bus.gizmo_visibility_changed.connect(_on_gizmo_visibility_changed) + + +#endregion + +#region Virtual #################################################################################### + +func _edit(object: Object) -> void: + if object == null or object.get_class() == "EditorDebuggerRemoteObject": + return + + _target_node = object + _active_gizmos.clear() + + if EditorInterface.get_edited_scene_root() is PopochiuCharacter: + _active_gizmos.append(_gizmos[DIALOG_POS]) + elif EditorInterface.get_edited_scene_root() is PopochiuRoom: + _active_gizmos.append(_gizmos[WALK_TO_POINT]) + _active_gizmos.append(_gizmos[LOOK_AT_POINT]) + _active_gizmos.append(_gizmos[BASELINE]) + + for gizmo in _active_gizmos: + gizmo.set_target_node(_target_node) + + if not EditorInterface.get_inspector().property_edited.is_connected(_on_property_changed): + EditorInterface.get_inspector().property_edited.connect(_on_property_changed) + update_overlays() + + +func _forward_canvas_draw_over_viewport(viewport_control: Control) -> void: + for gizmo in _active_gizmos: + gizmo.draw(viewport_control, _target_node.get(gizmo.target_property)) + + +func _handles(object: Object) -> bool: + return object is PopochiuClickable + + +func _forward_canvas_gui_input(event: InputEvent) -> bool: + if not _target_node or not _target_node.is_visible_in_tree(): + return false + + # For left mouse buttons, try to grab or release, depending on state + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT: + # Grab + if not _grabbed_gizmo and event.is_pressed(): + return _try_grab_gizmo(event) + # Release + elif _grabbed_gizmo and event.is_released(): + return _release_gizmo(event) + + # For mouse movement, drag the grabbed gizmo + if event is InputEventMouseMotion: + return _drag_gizmo(event) + + # For ESC key or comparable events, cancel the dragging if in place + if event.is_action_pressed("ui_cancel"): + return _cancel_dragging_gizmo(event) + + ## Nothing to handle outside the cases above + return false + + +#endregion + +#region Private #################################################################################### + +func _on_property_changed(property: String): + update_overlays() + + +func _on_gizmo_settings_changed() -> void: + var gizmo_id = 0 + var default_font = EditorInterface.get_editor_theme().default_font + + for gizmo in _gizmos: + match gizmo_id: + WALK_TO_POINT: + gizmo.set_theme( + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_WALK_TO_POINT_COLOR), + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE), + default_font, + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE) + ) + LOOK_AT_POINT: + gizmo.set_theme( + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_LOOK_AT_POINT_COLOR), + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE), + default_font, + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE) + ) + BASELINE: + gizmo.set_theme( + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_BASELINE_COLOR), + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE), + default_font, + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE) + ) + DIALOG_POS: + gizmo.set_theme( + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_DIALOG_POS_COLOR), + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE), + default_font, + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE) + ) + + gizmo.show_connector = PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_SHOW_CONNECTORS) + gizmo.show_outlines = PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_SHOW_OUTLINE) + gizmo.show_target_name = PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_SHOW_NODE_NAME) + gizmo_id += 1 + + update_overlays() + + +func _on_gizmo_visibility_changed(gizmo_id:int, visibility:bool): + if gizmo_id < _gizmos.size(): + _gizmos[gizmo_id].visible = visibility + update_overlays() + +func _update_properties(): + if _grabbed_gizmo and _grabbed_gizmo.target_property: + _target_node.set( + _grabbed_gizmo.target_property, + _grabbed_gizmo.get_position() + ) + + +func _init_popochiu_gizmo(gizmo_id: int) -> Gizmo2D: + var gizmo: Gizmo2D + var default_font = EditorInterface.get_editor_theme().default_font + + match gizmo_id: + WALK_TO_POINT: + gizmo = Gizmo2D.new(_target_node, "walk_to_point", "Walk To Point", Gizmo2D.GIZMO_POS) + gizmo.set_theme( + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_WALK_TO_POINT_COLOR), + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE), + default_font, + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE) + ) + LOOK_AT_POINT: + gizmo = Gizmo2D.new(_target_node, "look_at_point", "Look At Point", Gizmo2D.GIZMO_POS) + gizmo.set_theme( + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_LOOK_AT_POINT_COLOR), + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE), + default_font, + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE) + ) + BASELINE: + gizmo = Gizmo2D.new(_target_node, "baseline", "Baseline", Gizmo2D.GIZMO_VPOS) + gizmo.set_theme( + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_BASELINE_COLOR), + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE), + default_font, + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE) + ) + DIALOG_POS: + gizmo = Gizmo2D.new(_target_node, "dialog_pos", "Dialog Position", Gizmo2D.GIZMO_POS) + gizmo.set_theme( + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_DIALOG_POS_COLOR), + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE), + default_font, + PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE) + ) + return gizmo + + +func _try_grab_gizmo(event: InputEventMouseButton) -> bool: + # Check if the mouse click happened on a gizmo + # The order is reversed to the topmost gizmo + # (the last been drawn) is selected + for i in range(_active_gizmos.size() - 1, -1, -1): + if not _active_gizmos[i].has_point(event.position): + continue + _grabbed_gizmo = _active_gizmos[i] + break + + # If user clicked on no gizmos + # ignore the event + if not _grabbed_gizmo: + return false + + # hold the gizmo with the mouse + _grabbed_gizmo.grab(event.position) + _undo.create_action("Move gizmo") + _undo.add_undo_property( + _grabbed_gizmo.target_node, + _grabbed_gizmo.target_property, + _grabbed_gizmo.target_node.get(_grabbed_gizmo.target_property) + ) + update_overlays() + return true + + +func _release_gizmo(event: InputEvent) -> bool: + # If there is no gizmo to release + # ignore the event + if not _grabbed_gizmo: + return false + + _grabbed_gizmo.release() + _undo.add_do_property( + _grabbed_gizmo.target_node, + _grabbed_gizmo.target_property, + _grabbed_gizmo.target_node.get(_grabbed_gizmo.target_property) + ) + _undo.commit_action() + update_overlays() + _grabbed_gizmo = null + return true + + +func _drag_gizmo(event: InputEvent) -> bool: + # If no gizmo to drag + # ignore the event + if not _grabbed_gizmo: + return false + + # Drag the gizmo + _grabbed_gizmo.drag_to(event.position) + _update_properties() + update_overlays() + return true + + +func _cancel_dragging_gizmo(event: InputEvent) -> bool: + # If ESC/Cancel happens but we're not dragging + # ignore the event + if not _grabbed_gizmo: + return false + + # Cancel the action + _grabbed_gizmo.cancel() + _undo.commit_action() + _undo.get_history_undo_redo(_undo.get_object_history_id(_grabbed_gizmo.target_node)).undo() + update_overlays() + _grabbed_gizmo = null + return true + + +#endregion diff --git a/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd.uid b/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd.uid new file mode 100644 index 0000000..3c3eeae --- /dev/null +++ b/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd.uid @@ -0,0 +1 @@ +uid://1t0c81s6wd7c diff --git a/addons/popochiu/editor/gizmos/plugin.cfg b/addons/popochiu/editor/gizmos/plugin.cfg new file mode 100644 index 0000000..d0e45dc --- /dev/null +++ b/addons/popochiu/editor/gizmos/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="PopochiuGizmoClickable" +description="Provides viewport-drawn interactive 2D gizmos to Popochiu objects in the editor." +author="Carenalgas Dev Team" +version="2.0" +script="gizmo_clickable_plugin.gd" \ No newline at end of file diff --git a/addons/popochiu/editor/helpers/popochiu_editor_helper.gd b/addons/popochiu/editor/helpers/popochiu_editor_helper.gd new file mode 100644 index 0000000..4d5643f --- /dev/null +++ b/addons/popochiu/editor/helpers/popochiu_editor_helper.gd @@ -0,0 +1,323 @@ +@tool +class_name PopochiuEditorHelper +extends Resource +## Utils class for Editor related things. + +# ---- Strings, paths, scenes, and other values ---------------------------------------------------- +const POPUPS_FOLDER = "res://addons/popochiu/editor/popups/" +const CREATE_OBJECT_FOLDER = "res://addons/popochiu/editor/popups/create_object/" +const CREATE_ROOM = preload(CREATE_OBJECT_FOLDER + "create_room/create_room.tscn") +const CREATE_CHARACTER = preload(CREATE_OBJECT_FOLDER + "create_character/create_character.tscn") +const CREATE_INVENTORY_ITEM = preload( + CREATE_OBJECT_FOLDER + "create_inventory_item/create_inventory_item.tscn" +) +const CREATE_DIALOG = preload(CREATE_OBJECT_FOLDER + "create_dialog/create_dialog.tscn") +const CREATE_PROP = preload(CREATE_OBJECT_FOLDER + "create_prop/create_prop.tscn") +const CREATE_HOTSPOT = preload(CREATE_OBJECT_FOLDER + "create_hotspot/create_hotspot.tscn") +const CREATE_WALKABLE_AREA = preload( + CREATE_OBJECT_FOLDER + "create_walkable_area/create_walkable_area.tscn" +) +const CREATE_REGION = preload(CREATE_OBJECT_FOLDER + "create_region/create_region.tscn") +const CREATE_MARKER = preload(CREATE_OBJECT_FOLDER + "create_marker/create_marker.tscn") +const DELETE_CONFIRMATION_SCENE = preload( + POPUPS_FOLDER + "delete_confirmation/delete_confirmation.tscn" +) +const PROGRESS_DIALOG_SCENE = preload(POPUPS_FOLDER + "progress/progress.tscn") +const SETUP_SCENE = preload("res://addons/popochiu/editor/popups/setup/setup.tscn") +# ---- Identifiers --------------------------------------------------------------------------------- +const POPOCHIU_OBJECT_POLYGON_GROUP = "popochiu_object_polygon" +const MIGRATIONS_PANEL_SCENE = preload( + "res://addons/popochiu/editor/popups/migrations_panel/migrations_panel.tscn" +) +# ---- Classes ------------------------------------------------------------------------------------- +const PopochiuSignalBus = preload("res://addons/popochiu/editor/helpers/popochiu_signal_bus.gd") +const DeleteConfirmation = preload(POPUPS_FOLDER + "delete_confirmation/delete_confirmation.gd") +const Progress = preload(POPUPS_FOLDER + "progress/progress.gd") +const CreateObject = preload(CREATE_OBJECT_FOLDER + "create_object.gd") +const MigrationsPanel = preload( + "res://addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd" +) + +static var signal_bus := PopochiuSignalBus.new() +static var ei := EditorInterface +static var undo_redo: EditorUndoRedoManager = null +static var dock: Panel = null + +static var _room_scene_path_template := PopochiuResources.ROOMS_PATH.path_join("%s/room_%s.tscn") + + +#region Public ##################################################################################### +static func select_node(node: Node) -> void: + ei.get_selection().clear() + ei.get_selection().add_node(node) + + +static func show_popup(popup_name: String) -> void: + PopochiuUtils.print_normal(popup_name) + + +static func add_resource_to_popochiu(target: String, resource: Resource) -> int: + return PopochiuResources.set_data_value(target, resource.script_name, resource.resource_path) + + +static func show_delete_confirmation( + content: DeleteConfirmation, min_size := Vector2i(640, 160) +) -> void: + var dialog := ConfirmationDialog.new() + dialog.title = content.title + + dialog.confirmed.connect( + func () -> void: + if content.on_confirmed: + content.on_confirmed.call() + + dialog.queue_free() + ) + dialog.canceled.connect( + func () -> void: + if content.on_canceled: + content.on_canceled.call() + + dialog.queue_free() + ) + dialog.about_to_popup.connect(content.on_about_to_popup) + dialog.add_child(content) + + await show_dialog(dialog, min_size) + + +static func show_progress(min_size := Vector2i(640, 80)) -> Progress: + var dialog := AcceptDialog.new() + var content: Progress = PROGRESS_DIALOG_SCENE.instantiate() + + dialog.borderless = true + dialog.add_child(content) + dialog.get_ok_button().hide() + await show_dialog(dialog, min_size) + + return content + + +static func show_creation_popup(scene: PackedScene, min_size := Vector2i(640, 180)) -> void: + var content: CreateObject = scene.instantiate() + var dialog := ConfirmationDialog.new() + + content.content_changed.connect( + func () -> void: + content.custom_minimum_size = content.get_child(0).size + content.size = content.get_child(0).size + + dialog.reset_size() + dialog.move_to_center() + ) + dialog.confirmed.connect(content.create) + dialog.canceled.connect(dialog.queue_free) + dialog.about_to_popup.connect(content.on_about_to_popup) + dialog.add_child(content) + await show_dialog(dialog, min_size) + + dialog.register_text_enter(content.input) + + +static func show_setup(is_welcome := false) -> void: + var dialog := ConfirmationDialog.new() + var content := SETUP_SCENE.instantiate() + + dialog.title = "Setup" + dialog.confirmed.connect(content.on_close) + dialog.close_requested.connect(content.on_close) + dialog.about_to_popup.connect(content.on_about_to_popup) + + dialog.add_child(content) + dock.add_child.call_deferred(dialog) + await dialog.ready + + content.define_content(is_welcome) + content.size_calculated.connect( + func () -> void: + dialog.reset_size() + dialog.move_to_center() + ) + + await show_dialog(dialog, content.custom_minimum_size) + + +static func show_migrations( + content: MigrationsPanel, min_size := Vector2i(640, 640) +) -> AcceptDialog: + var dialog := AcceptDialog.new() + dialog.title = "Migration Tool" + content.anchors_preset = Control.PRESET_FULL_RECT + dialog.add_child(content) + await show_dialog(dialog, min_size) + + return dialog + + +static func show_dialog(dialog: Window, min_size := Vector2i.ZERO) -> void: + if not dialog.is_inside_tree(): + dock.add_child.call_deferred(dialog) + await dialog.ready + + dialog.popup_centered(min_size * EditorInterface.get_editor_scale()) + + + +# Type-checking functions +static func is_popochiu_clickable(node: Node) -> bool: + return node is PopochiuCharacter \ + or node is PopochiuProp \ + or node is PopochiuHotspot + + +static func is_popochiu_object(node: Node) -> bool: + return node is PopochiuRoom \ + or is_popochiu_room_object(node) + + +static func is_popochiu_room_object(node: Node) -> bool: + return node is PopochiuCharacter \ + or node is PopochiuProp \ + or node is PopochiuHotspot \ + or node is PopochiuWalkableArea \ + or node is PopochiuRegion + + +static func is_room(node: Node) -> bool: + return node is PopochiuRoom + + +static func is_character(node: Node) -> bool: + return node is PopochiuCharacter + + +static func is_prop(node: Node) -> bool: + return node is PopochiuProp + + +static func is_hotspot(node: Node) -> bool: + return node is PopochiuHotspot + + +static func is_walkable_area(node: Node) -> bool: + return node is PopochiuWalkableArea + + +static func is_region(node: Node) -> bool: + return node is PopochiuRegion + + +static func is_marker(node: Node) -> bool: + return node is Marker2D + + +static func is_popochiu_obj_polygon(node: Node): + return node.is_in_group(POPOCHIU_OBJECT_POLYGON_GROUP) + + +# Context-checking functions +static func is_editing_room() -> bool: + # If the open scene in the editor is a PopochiuRoom, return true + return is_room(ei.get_edited_scene_root()) + + +# Quick-access functions +static func get_first_child_by_group(node: Node, group: StringName) -> Node: + if (node == null): + return null + for n in node.get_children(): + if n.is_in_group(group): + return n + return null + + +static func get_all_children(node, children := []) -> Array: + if node == null: + return [] + children.push_back(node) + for child in node.get_children(): + children = get_all_children(child, children) + return children + + +## Overrides the font [param font_name] in [param node] by the theme [Font] identified by +## [param editor_font_name]. +static func override_font(node: Control, font_name: String, editor_font_name: String) -> void: + node.add_theme_font_override(font_name, node.get_theme_font(editor_font_name, "EditorFonts")) + + +static func frame_processed() -> void: + await EditorInterface.get_base_control().get_tree().process_frame + + +static func secs_passed(secs := 1.0) -> void: + await EditorInterface.get_base_control().get_tree().create_timer(secs).timeout + + +static func filesystem_scanned() -> void: + EditorInterface.get_resource_filesystem().scan.call_deferred() + await EditorInterface.get_resource_filesystem().filesystem_changed + + +static func pack_scene(node: Node, path := "") -> int: + var packed_scene := PackedScene.new() + packed_scene.pack(node) + + if path.is_empty(): + path = node.scene_file_path + + return ResourceSaver.save(packed_scene, path) + + +## Helper function to recursively remove all folders and files inside [param folder_path]. +static func remove_recursive(folder_path: String) -> bool: + if DirAccess.dir_exists_absolute(folder_path): + # Delete subfolders and their contents recursively in folder_path + for subfolder_path: String in get_absolute_directory_paths_at(folder_path): + remove_recursive(subfolder_path) + + # Delete all files in folder_path + for file_path: String in get_absolute_file_paths_at(folder_path): + if DirAccess.remove_absolute(file_path) != OK: + return false + + # Once all files are deleted in folder_path, remove folder_path + if DirAccess.remove_absolute(folder_path) != OK: + return false + return true + + +## Helper function to get the absolute directory paths for all folders under [param folder_path]. +static func get_absolute_directory_paths_at(folder_path: String) -> Array: + var dir_array : PackedStringArray = [] + + if DirAccess.dir_exists_absolute(folder_path): + for folder in DirAccess.get_directories_at(folder_path): + dir_array.append(folder_path.path_join(folder)) + + return Array(dir_array) + + +## Helper function to get the absolute file paths for all files under [param folder_path]. +static func get_absolute_file_paths_at(folder_path: String) -> PackedStringArray: + var file_array : PackedStringArray = [] + + if DirAccess.dir_exists_absolute(folder_path): + for file in DirAccess.get_files_at(folder_path): + file_array.append(folder_path.path_join(file)) + + return file_array + + +## Returns an array of [PopochiuRoom] (instances) for all the rooms in the project. +static func get_rooms() -> Array[PopochiuRoom]: + var rooms: Array[PopochiuRoom] = [] + rooms.assign(PopochiuResources.get_section_keys("rooms").map( + func (room_name: String) -> PopochiuRoom: + var scene_path := _room_scene_path_template.replace("%s", room_name.to_snake_case()) + return (load(scene_path) as PackedScene).instantiate(PackedScene.GEN_EDIT_STATE_INSTANCE) + )) + return rooms + + +#endregion diff --git a/addons/popochiu/editor/helpers/popochiu_editor_helper.gd.uid b/addons/popochiu/editor/helpers/popochiu_editor_helper.gd.uid new file mode 100644 index 0000000..0ce83b8 --- /dev/null +++ b/addons/popochiu/editor/helpers/popochiu_editor_helper.gd.uid @@ -0,0 +1 @@ +uid://bgogdq51wvqyn diff --git a/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd b/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd new file mode 100644 index 0000000..7ec557e --- /dev/null +++ b/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd @@ -0,0 +1,359 @@ +@tool +extends Resource +## Helper class for operations related to the GUI templates + +static var _template_id := "" +static var _template_theme_path := "" + +#region Public ##################################################################################### +## Creates a copy of the selected template, including its components. Also generate the necessary +## scripts to define custom logic for the graphical interface and its commands. +static func copy_gui_template( + template_name: String, on_progress: Callable, on_complete: Callable +) -> void: + if ( + DirAccess.dir_exists_absolute(PopochiuResources.GUI_GAME_FOLDER) + and template_name == PopochiuResources.get_data_value("ui", "template", "") + ): + PopochiuUtils.print_normal("No changes in GUI template.") + + on_complete.call() + return + + on_progress.call(0, "Starting GUI template application") + + _template_theme_path = "" + + var scene_path := PopochiuResources.GUI_CUSTOM_SCENE + var commands_template_path := PopochiuResources.GUI_CUSTOM_TEMPLATE + + _template_id = template_name.to_snake_case() + + if _template_id != PopochiuResources.GUI_CUSTOM: + scene_path = PopochiuResources.GUI_TEMPLATES_FOLDER.path_join( + "%s/%s_gui.tscn" % [_template_id, _template_id] + ) + commands_template_path = PopochiuResources.GUI_SCRIPT_TEMPLATES_FOLDER.path_join( + "%s_commands_template.gd" % _template_id + ) + + var script_path := PopochiuResources.GUI_GAME_SCENE.replace(".tscn", ".gd") + + await _wait() + on_progress.call(5, "Creating Graphic Interface scene") + + # ---- Make a copy of the selected GUI template ------------------------------------------------ + if _create_scene(scene_path) != OK: + PopochiuUtils.print_error("Couldn't create %s file" % PopochiuResources.GUI_GAME_SCENE) + return + + await _wait(2.0) + on_progress.call(10, "Copying a bunch of components") + + # Copy the components used by the GUI template to the res://game/gui/components + # folder so devs can play with them freely ----------------------------------------------------- + await copy_components(scene_path, true) + + on_progress.call(60, "Creating scripts") + + # Create a copy of the corresponding commands template ----------------------------------------- + _copy_commands_and_gui_scripts( + commands_template_path, PopochiuResources.GUI_COMMANDS, script_path, scene_path + ) + + await _wait(1.5) + on_progress.call(80, "Assigning scripts") + + # Update the script of the created gui.tscn so it uses the copy created above ------------------ + if _update_scene_script(script_path) != OK: + PopochiuUtils.print_error("Couldn't update gui.tscn script") + return + + await _wait() + on_progress.call(90, "Updating config file") + + # Update the info related to the GUI template and the GUI commands script + # in the popochiu_data.cfg file ---------------------------------------------------------------- + PopochiuResources.set_data_value("ui", "template", template_name) + await _wait(0.8) + + on_progress.call(100, "All in place. Thanks for your patience.") + PopochiuUtils.print_normal("[wave]Selected GUI template successfully applied[/wave]") + await _wait() + await PopochiuEditorHelper.filesystem_scanned() + + on_complete.call() + + +static func copy_component(source_scene_path: String) -> String: + var file_name := source_scene_path.get_file() + var source_folder := source_scene_path.get_base_dir() + + var target_folder := source_folder.replace(PopochiuResources.GUI_ADDON_FOLDER, "") + target_folder = PopochiuResources.GUI_GAME_FOLDER + target_folder + + if not DirAccess.dir_exists_absolute(target_folder): + DirAccess.make_dir_recursive_absolute(target_folder) + + # Make a copy of the component and save it in the graphic interface components folder + var component_instance := (load(source_scene_path) as PackedScene).instantiate() + var target_scene_file := "%s/%s" % [target_folder, file_name] + + var packed_scene := PackedScene.new() + packed_scene.pack(component_instance) + packed_scene.resource_path = target_scene_file + + var err := ResourceSaver.save(packed_scene, target_scene_file) + + if err != OK: + PopochiuUtils.print_error( + "Couldn't create instance of %s component. Error code: %d." % [ + file_name.get_slice(".", 0).capitalize(), + err + ] + ) + + return "" + + # Move the dependencies of the source scene to the graphic interface folder + await copy_components(source_scene_path) + + return target_scene_file + + +## Makes a copy of the components used by the original GUI template to the +## **res://game/gui/components/** folder so devs can play with those scenes without +## affecting the ones in the plugin's folder. +static func copy_components(source_scene_path: String, is_gui_game_scene := false) -> void: + var dependencies_to_update: Array[Dictionary] = [] + + # Make a copy of the dependencies of the graphic interface + for dep: String in ResourceLoader.get_dependencies(source_scene_path): + var source_file_path := dep.get_slice("::", 2) + + if ( + is_gui_game_scene and source_file_path.get_extension() == "gd" + and source_scene_path.get_base_dir() == source_file_path.get_base_dir() + ): + # Ignore the script of the GUI template scene file + continue + + var source_file_uid := ResourceUID.id_to_text( + ResourceLoader.get_resource_uid(source_file_path) + ) + var dependency_data := { + source_path = source_file_path, + source_uid = source_file_uid, + target_path = "", + } + + # ---- Create the folder of the file ------------------------------------------------------- + var file_name := source_file_path.get_file() + var source_folder := source_file_path.get_base_dir() + + var target_folder := source_folder.replace(PopochiuResources.GUI_ADDON_FOLDER, "") + target_folder = target_folder.replace("templates/%s/" % _template_id, "") + target_folder = PopochiuResources.GUI_GAME_FOLDER + target_folder + + dependency_data.target_path = "%s/%s" % [target_folder, file_name] + + # Make sure all the copied components share the copied GUI theme + if source_file_path.get_extension() == "tres" and "_theme" in source_file_path: + if is_gui_game_scene and _template_theme_path.is_empty(): + # Change the name of the GUI template theme so it differs from the original one + dependency_data.target_path = "%s/%s" % [ + target_folder, "gui_theme.tres" + ] + _template_theme_path = dependency_data.target_path + elif not is_gui_game_scene: + dependency_data.target_path = _template_theme_path + + dependencies_to_update.append(dependency_data) + + if FileAccess.file_exists(dependency_data.target_path): + # Ignore any file that has already been copied + continue + + if not DirAccess.dir_exists_absolute(target_folder): + DirAccess.make_dir_recursive_absolute(target_folder) + + # --- Make a copy of the original file ----------------------------------------------------- + if source_file_path.get_extension() == "gd": + _copy_component_script(source_file_path, dependency_data.target_path) + else: + _copy_file(source_file_path, target_folder, dependency_data.target_path) + + EditorInterface.get_resource_filesystem().scan() + await EditorInterface.get_resource_filesystem().filesystem_changed + + # Repeat the process for each of the dependencies of the .tscn resources + if source_file_path.get_extension() == "tscn": + await copy_components(source_file_path) + + if is_gui_game_scene: + _update_dependencies(PopochiuResources.GUI_GAME_SCENE, dependencies_to_update) + else: + var game_scene_path := source_scene_path.replace(PopochiuResources.GUI_ADDON_FOLDER, "") + game_scene_path = game_scene_path.replace("templates/%s/" % _template_id, "") + game_scene_path = PopochiuResources.GUI_GAME_FOLDER + game_scene_path + + _update_dependencies(game_scene_path, dependencies_to_update) + + EditorInterface.get_resource_filesystem().scan() + await EditorInterface.get_resource_filesystem().filesystem_changed + + +#endregion + +#region Private #################################################################################### +## Create the **gui.tscn** file as a copy of the selected GUI template scene. +## If a template change is being made, all components of the previous template are removed along +## with the **.tscn** file before copying the new one. +static func _create_scene(scene_path: String) -> int: + # Create the res://game/gui/ folder + if not FileAccess.file_exists(PopochiuResources.GUI_GAME_SCENE): + DirAccess.make_dir_recursive_absolute(PopochiuResources.GUI_GAME_FOLDER) + else: + # Remove the gui.tscn file + DirAccess.remove_absolute(PopochiuResources.GUI_GAME_SCENE) + EditorInterface.get_resource_filesystem().scan() + + for dir_name: String in DirAccess.get_directories_at(PopochiuResources.GUI_GAME_FOLDER): + _remove_components(PopochiuResources.GUI_GAME_FOLDER + dir_name) + + # Make a copy of the selected GUI template (.tscn) and save it in + # res://game/gui/gui.tscn ------------------------------------------ + var gi_scene := load(scene_path).duplicate(true) + gi_scene.resource_path = PopochiuResources.GUI_GAME_SCENE + + return ResourceSaver.save(gi_scene, PopochiuResources.GUI_GAME_SCENE) + + +static func _remove_components(dir_path: String) -> void: + for file_name: String in DirAccess.get_files_at(dir_path): + DirAccess.remove_absolute(dir_path.path_join(file_name)) + EditorInterface.get_resource_filesystem().scan() + + for dir_name: String in DirAccess.get_directories_at(dir_path): + var sub_dir_path := dir_path.path_join(dir_name) + _remove_components(sub_dir_path) + + # Once the directory is empty, remove it + DirAccess.remove_absolute(dir_path) + EditorInterface.get_resource_filesystem().scan() + + +## Makes a copy of a GUI component's script. +static func _copy_component_script( + source_file_path: String, target_file_path: String +) -> void: + # Make a copy of the original script ----------------------------------------------------------- + var source_file := FileAccess.open(source_file_path, FileAccess.READ) + var source_code := source_file.get_as_text() + source_file.close() + + if "class_name " in source_code: + source_code = source_code.replace("class_name Popochiu", "class_name GUI") + + var file_write := FileAccess.open(target_file_path, FileAccess.WRITE) + file_write.store_string(source_code) + file_write.close() + + # Create a script for devs to overwrite the functionality of the original's copy script -------- + file_write = FileAccess.open(target_file_path.replace(".gd", "_custom.gd"), FileAccess.WRITE) + if "@tool" in source_code: + file_write.store_string("@tool\n") + file_write.store_string('extends "%s"' % target_file_path.get_file()) + + +static func _copy_file( + source_file_path: String, target_folder: String, target_file_path: String +) -> void: + # ---- Create a copy of the scene file --------------------------------------------------------- + if source_file_path.get_extension() in ["tscn", "tres"]: + var file_resource := load(source_file_path).duplicate(true) + file_resource.resource_path = target_file_path + + if ResourceSaver.save(file_resource, target_file_path) != OK: + DirAccess.remove_absolute(target_folder) + else: + DirAccess.copy_absolute(source_file_path, target_file_path) + + +## Replace the UID and paths of the components in the graphic interface scene +static func _update_dependencies(scene_path: String, dependencies_to_update: Array) -> void: + if dependencies_to_update.is_empty(): + return + + # ---- Update the UID and paths of the copied components --------------------------------------- + var file_read = FileAccess.open(scene_path, FileAccess.READ) + var text := file_read.get_as_text() + file_read.close() + + for dic: Dictionary in dependencies_to_update: + var target_path: String = dic.target_path + + if ".gd" in target_path: + target_path = target_path.replace(".gd", "_custom.gd") + + text = text.replace(dic.source_path, target_path) + + var target_uid := ResourceUID.id_to_text(ResourceLoader.get_resource_uid(target_path)) + + if "invalid" in target_uid: continue + + text = text.replace(dic.source_uid, target_uid) + + var file_write = FileAccess.open(scene_path, FileAccess.WRITE) + file_write.store_string(text) + file_write.close() + + +## Copy the commands and graphic interface scripts of the chosen GUI template. The new graphic +## interface scripts inherits from the one originally assigned to the .tscn file of the selected +## template. +static func _copy_commands_and_gui_scripts( + commands_template_path: String, commands_path: String, script_path: String, scene_path: String +) -> void: + DirAccess.copy_absolute(commands_template_path, commands_path) + + # Create a copy of the graphic interface script template --------------------------------------- + var template_path := ( + PopochiuResources.GUI_SCRIPT_TEMPLATES_FOLDER + "gui_template.gd" + ) + var script_file := FileAccess.open(template_path, FileAccess.READ) + var source_code := script_file.get_as_text() + script_file.close() + source_code = source_code.replace( + "extends PopochiuGraphicInterface", + 'extends "%s"' % scene_path.replace(".tscn", ".gd") + ) + script_file = FileAccess.open(script_path, FileAccess.WRITE) + script_file.store_string(source_code) + script_file.close() + + +## Updates the script of the created [b]res://game/gui/gui.tscn[/b] file so it uses the one created +## in [method _copy_commands_and_gui_scripts]. +static func _update_scene_script(script_path: String) -> int: + # Update the script of the GUI ----------------------------------------------------------------- + var scene := (load( + PopochiuResources.GUI_GAME_SCENE + ) as PackedScene).instantiate() + scene.set_script(load(script_path)) + + # Set the name of the root node + scene.name = "GUI" + + var packed_scene: PackedScene = PackedScene.new() + packed_scene.pack(scene) + packed_scene.resource_path = PopochiuResources.GUI_GAME_SCENE + + return ResourceSaver.save(packed_scene, PopochiuResources.GUI_GAME_SCENE) + + +static func _wait(max := 1.0) -> void: + await PopochiuEditorHelper.secs_passed(randf_range(0.5, max)) + + +#endregion diff --git a/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd.uid b/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd.uid new file mode 100644 index 0000000..cfe832e --- /dev/null +++ b/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd.uid @@ -0,0 +1 @@ +uid://cn6emnkso14qe diff --git a/addons/popochiu/editor/helpers/popochiu_signal_bus.gd b/addons/popochiu/editor/helpers/popochiu_signal_bus.gd new file mode 100644 index 0000000..e6bc6d0 --- /dev/null +++ b/addons/popochiu/editor/helpers/popochiu_signal_bus.gd @@ -0,0 +1,9 @@ +extends RefCounted +## Helper Editor class to emit and connect to signals across different components in the plugin + +signal main_scene_changed(scene_path: String) +signal pc_changed(script_name: String) +signal audio_cues_deleted(cue_file_paths: Array) +signal main_object_added(type: int, name_to_add: String) +signal gizmo_visibility_changed(gizmo: int, visible: bool) +signal migrations_done diff --git a/addons/popochiu/editor/helpers/popochiu_signal_bus.gd.uid b/addons/popochiu/editor/helpers/popochiu_signal_bus.gd.uid new file mode 100644 index 0000000..b99ace3 --- /dev/null +++ b/addons/popochiu/editor/helpers/popochiu_signal_bus.gd.uid @@ -0,0 +1 @@ +uid://p35cn6n5xi6r diff --git a/addons/popochiu/editor/importers/aseprite/animation_creator.gd b/addons/popochiu/editor/importers/aseprite/animation_creator.gd new file mode 100644 index 0000000..07b11db --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/animation_creator.gd @@ -0,0 +1,390 @@ +@tool +# This logic has been taken almost as-is from Vinicius Gerevini's +# Aseprite Wizard plugin. Credits goes to him for the real magic. +# See: https://godotengine.org/asset-library/asset/713 +extends RefCounted + +const RESULT_CODE = preload("res://addons/popochiu/editor/config/result_codes.gd") +const _DEFAULT_AL = "" # Empty string equals default "Global" animation library + +# Vars configured on initialization +var _file_system: EditorFileSystem +var _aseprite: RefCounted + +# Vars configured on animations creation +var _target_node: Node +var _player: AnimationPlayer +var _options: Dictionary + +# Class-logic vars +var _spritesheet_metadata = {} +var _target_sprite: Sprite2D +var _output: Dictionary + + +#region Public ##################################################################################### +func init(aseprite: RefCounted, editor_file_system: EditorFileSystem = null): + _file_system = editor_file_system + _aseprite = aseprite + + +## Public interfaces, dedicated to specific popochiu objects +func create_character_animations(character: Node, player: AnimationPlayer, options: Dictionary): + # Chores + _target_node = character + _player = player + _options = options + + # Duly check everything is valid and cleanup animations + var result = _perform_common_checks() + if result != RESULT_CODE.SUCCESS: + return result + + # Create the spritesheet + result = await _create_spritesheet_from_file() + if result != RESULT_CODE.SUCCESS: + return result + + # Load tags information + result = await _load_spritesheet_metadata() + if result != RESULT_CODE.SUCCESS: + return result + + # Set the texture in the sprite and configure + # the animations in the AnimationPlayer + _setup_texture() + result = _configure_animations() + + return result + + +func create_prop_animations(prop: Node, aseprite_tag: String, options: Dictionary): + # Chores + _target_node = prop + # TODO: if the prop has no AnimationPlayer, add one! + _player = prop.get_node("AnimationPlayer") + _options = options + + var prop_animation_name = aseprite_tag.to_snake_case() + + # Duly check everything is valid and cleanup animations + var result = _perform_common_checks() + if result != RESULT_CODE.SUCCESS: + return result + + # Create the spritesheet + result = await _create_spritesheet_from_tag(aseprite_tag) + if result != RESULT_CODE.SUCCESS: + return result + + # Load tags information + result = await _load_spritesheet_metadata(aseprite_tag) + if result != RESULT_CODE.SUCCESS: + return result + + # Set the texture in the sprite and configure + # the animations in the AnimationPlayer + _setup_texture() + result = _configure_animations() + + # Sorry, mom... + _player.autoplay = prop.name.to_snake_case() + + return result + + +#endregion + +#region Private #################################################################################### +## This function creates a spritesheet with the whole file content +func _create_spritesheet_from_file(): + ## TODO: See _aseprite.export_layer() when the time comes to add layers selection + _output = _aseprite.export_file(_options.source, _options.output_folder, _options) + if _output.is_empty(): + return RESULT_CODE.ERR_ASEPRITE_EXPORT_FAILED + return RESULT_CODE.SUCCESS + + +## This function creates a spritesheet with the frames of a specific tag +## WARNING: it's case sensitive +func _create_spritesheet_from_tag(selected_tag: String): + ## TODO: See _aseprite.export_layer() when the time comes to add layers selection + _output = _aseprite.export_tag(_options.source, selected_tag, _options.output_folder, _options) + if _output.is_empty(): + return RESULT_CODE.ERR_ASEPRITE_EXPORT_FAILED + return RESULT_CODE.SUCCESS + + +func _load_spritesheet_metadata(selected_tag: String = ""): + _spritesheet_metadata = { + tags = {}, + frames = {}, + meta = {}, + sprite_sheet = {} + } + + # Refresh filesystem + await _scan_filesystem() + + # Collect all needed info + var source_file = _output.data_file + var sprite_sheet = _output.sprite_sheet + + # Try to access, decode and validate Aseprite JSON output + var file = FileAccess.open(source_file, FileAccess.READ) + if file == null: + return file.get_open_error() + + var test_json_conv = JSON.new() + test_json_conv.parse(file.get_as_text()) + var content = test_json_conv.get_data() + + if not _aseprite.is_valid_spritesheet(content): + return RESULT_CODE.ERR_INVALID_ASEPRITE_SPRITESHEET + + # Save image metadata from JSON data + _spritesheet_metadata.meta = content.meta + + # Save frames metadata from JSON data + _spritesheet_metadata.frames = _aseprite.get_content_frames(content) + + # Save tags metadata, starting from user's selection, and retrieving + # other information from JSON data + var tags = _options.get("tags").filter(func(tag): return tag.get("import")) + + for t in tags: + # If a tag is specified, ignore every other ones + if not selected_tag.is_empty() and selected_tag != t.tag_name: continue + # Create a lookup table for tags + _spritesheet_metadata.tags[t.tag_name] = t + + for ft in _aseprite.get_content_meta_tags(content): + if not _spritesheet_metadata.tags.has(ft.name): continue + _spritesheet_metadata.tags.get(ft.name).merge({ + from = ft.from, + to = ft.to, + direction = ft.direction, + }) + + # If a tag is specified, the tags lookup table should contain + # a single tag information. In this case the to and from properties + # must be shifted back in the [1 - tag_length] range. + if not selected_tag.is_empty(): + # Using a temp variable to make this readable + var t = _spritesheet_metadata.tags[selected_tag] + # NOTE: imagine this goes from 34 to 54, we need to shift + # the range back of a 33 amount, so it goes from 1 to (54 - 33) + t.to = t.to - t.from + 1 + t.from = 0 + _spritesheet_metadata.tags[selected_tag] = t + + # Save spritesheet path from the command output + _spritesheet_metadata.sprite_sheet = sprite_sheet + + # Remove the JSON file if config says so + if PopochiuEditorConfig.should_remove_source_files(): + DirAccess.remove_absolute(_output.data_file) + await _scan_filesystem() + + return RESULT_CODE.SUCCESS + + +func _configure_animations(): + if not _player.has_animation_library(_DEFAULT_AL): + _player.add_animation_library(_DEFAULT_AL, AnimationLibrary.new()) + + if _spritesheet_metadata.tags.size() > 0: + var result = RESULT_CODE.SUCCESS + # RESTART_FROM_HERE: WARNING: in case of prop and inventory, the JSON file contains + # the whole set of tags, so we must take the tag.from and tag.to and remap the range + # from "1" to "tag.to +1 - tag.from + 1" (do the math an you'll see that's correct) + for tag in _spritesheet_metadata.tags.values(): + var selected_frames = _spritesheet_metadata.frames.slice(tag.from, tag.to + 1) # slice is [) + result = _add_animation_frames(tag.tag_name, selected_frames, tag.direction) + if result != RESULT_CODE.SUCCESS: + break + return result + else: + return _add_animation_frames("default", _spritesheet_metadata.frames) + + +func _add_animation_frames(anim_name: String, frames: Array, direction = 'forward'): + # TODO: ATM there is no way to assign a walk/talk/grab/idle animation + # with a different name than the standard ones. The engine is searching for + # lowercase names in the AnimationPlayer, thus we are forcing snake_case + # animations name conversion. + # We have to add methods or properties to the Character to assign different + # animations (but maybe we can do with anim_prefix or other strategies). + var animation_name = anim_name.to_snake_case() + var is_loopable = _spritesheet_metadata.tags.get(anim_name).get("loops") + + # Create animation library if it doesn't exist + # This is always true if the user selected to wipe old animations. + # See _remove_animations_from_player() function. + if not _player.has_animation_library(_DEFAULT_AL): + _player.add_animation_library(_DEFAULT_AL, AnimationLibrary.new()) + + if not _player.get_animation_library(_DEFAULT_AL).has_animation(animation_name): + _player.get_animation_library(_DEFAULT_AL).add_animation(animation_name, Animation.new()) + + # Here is where animations are created. + # TODO: we need to "fork" the logic so that Character has a single spritesheet + # containing all tags, while Rooms/Props and Inventory Items has a single spritesheet + # for each tag, so that you can have each prop with its own animation (PnC) + var animation = _player.get_animation(animation_name) + _create_meta_tracks(animation) + var frame_track = _get_property_track_path("frame") + var frame_track_index = _create_track(_target_sprite, animation, frame_track) + + if direction == 'reverse': + frames.reverse() + + var animation_length = 0 + + for frame in frames: + var frame_key = _get_frame_key(frame) + animation.track_insert_key(frame_track_index, animation_length, frame_key) + animation_length += frame.duration / 1000 ## NOTE: animation_length is in seconds + + if direction == 'pingpong': + frames.remove_at(frames.size() - 1) + if is_loopable: + frames.remove_at(0) + frames.reverse() + + for frame in frames: + var frame_key = _get_frame_key(frame) + animation.track_insert_key(frame_track_index, animation_length, frame_key) + animation_length += frame.duration / 1000 ## NOTE: animation_length is in seconds + + animation.length = animation_length + animation.loop_mode = Animation.LOOP_LINEAR if is_loopable else Animation.LOOP_NONE + + return RESULT_CODE.SUCCESS + + +## TODO: insert validate tokens in animation name +func _create_track(target_sprite: Node, animation: Animation, track: String): + var track_index = animation.find_track(track, Animation.TYPE_VALUE) + + if track_index != -1: + animation.remove_track(track_index) + + track_index = animation.add_track(Animation.TYPE_VALUE) + ## Here we set a label for the track in the sprite_path:property_changed format + ## so that _get_property_track_path can rebuild it by naming convention + animation.track_set_path(track_index, track) + animation.track_set_interpolation_loop_wrap(track_index, false) + animation.value_track_set_update_mode(track_index, Animation.UPDATE_DISCRETE) + + return track_index + + +func _get_property_track_path(prop: String) -> String: + var node_path = _player.get_node(_player.root_node).get_path_to(_target_sprite) + return "%s:%s" % [node_path, prop] + + +func _scan_filesystem(): + _file_system.scan() + await _file_system.filesystem_changed + + +func _remove_properties_from_path(path: NodePath) -> NodePath: + var string_path := path as String + if !(":" in string_path): + return string_path as NodePath + + var property_path := path.get_concatenated_subnames() as String + string_path = string_path.substr(0, string_path.length() - property_path.length() - 1) + + return string_path as NodePath + + +# ---- SPRITE NODE LOGIC --------------------------------------------------------------------------- +## What follow is logic specifically gathered for Sprite elements. TextureRect should +## be treated in a different way (see texture_rect_animation_creator.gd file in +## original Aseprite Wizard plugin by Vinicius Gerevini) +func _setup_texture(): + # Load texture in target sprite (ignoring cache and forcing a refres) + var texture = ResourceLoader.load( + _spritesheet_metadata.sprite_sheet, 'Image', ResourceLoader.CACHE_MODE_IGNORE + ) + texture.take_over_path(_spritesheet_metadata.sprite_sheet) + _target_sprite.texture = texture + + if _spritesheet_metadata.frames.is_empty(): + return + + _target_sprite.hframes = ( + _spritesheet_metadata.meta.size.w / _spritesheet_metadata.frames[0].sourceSize.w + ) + _target_sprite.vframes = ( + _spritesheet_metadata.meta.size.h / _spritesheet_metadata.frames[0].sourceSize.h + ) + + +func _create_meta_tracks(animation: Animation): + var hframes_track = _get_property_track_path("hframes") + var hframes_track_index = _create_track(_target_sprite, animation, hframes_track) + animation.track_insert_key(hframes_track_index, 0, _target_sprite.hframes) + + var vframes_track = _get_property_track_path("vframes") + var vframes_track_index = _create_track(_target_sprite, animation, vframes_track) + animation.track_insert_key(vframes_track_index, 0, _target_sprite.vframes) + + var visible_track = _get_property_track_path("visible") + var visible_track_index = _create_track(_target_sprite, animation, visible_track) + animation.track_insert_key(visible_track_index, 0, true) + + +func _get_frame_key(frame: Dictionary): + return _calculate_frame_index(_target_sprite,frame) + + +func _calculate_frame_index(sprite: Node, frame: Dictionary) -> int: + var column = floor(frame.frame.x * sprite.hframes / sprite.texture.get_width()) + var row = floor(frame.frame.y * sprite.vframes / sprite.texture.get_height()) + return (row * sprite.hframes) + column + + +func _perform_common_checks(): + # Checks + if not _aseprite.check_command_path(): + return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FULL_PATH + + if not _aseprite.test_command(): + return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FOUND + + if not FileAccess.file_exists(_options.source): + return RESULT_CODE.ERR_SOURCE_FILE_NOT_FOUND + + if not DirAccess.dir_exists_absolute(_options.output_folder): + return RESULT_CODE.ERR_OUTPUT_FOLDER_NOT_FOUND + + _target_sprite = _find_sprite_in_target() + + if _target_sprite == null: + return RESULT_CODE.ERR_NO_SPRITE_FOUND + + if typeof(_options.get("tags")) != TYPE_ARRAY: + return RESULT_CODE.ERR_TAGS_OPTIONS_ARRAY_EMPTY + + if (_options.wipe_old_animations): + _remove_animations_from_player(_player) + + return RESULT_CODE.SUCCESS + + +func _find_sprite_in_target() -> Node: + if not _target_node.has_node("Sprite2D"): + return null + return _target_node.get_node("Sprite2D") + + +func _remove_animations_from_player(player: AnimationPlayer): + if player.has_animation_library(_DEFAULT_AL): + player.remove_animation_library(_DEFAULT_AL) + + +#endregion diff --git a/addons/popochiu/editor/importers/aseprite/animation_creator.gd.uid b/addons/popochiu/editor/importers/aseprite/animation_creator.gd.uid new file mode 100644 index 0000000..1b1078b --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/animation_creator.gd.uid @@ -0,0 +1 @@ +uid://c44sonibms74d diff --git a/addons/popochiu/editor/importers/aseprite/aseprite_controller.gd b/addons/popochiu/editor/importers/aseprite/aseprite_controller.gd new file mode 100644 index 0000000..5d90f8f --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/aseprite_controller.gd @@ -0,0 +1,249 @@ +@tool +extends RefCounted + + +# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PUBLIC ░░░░ +func export_file(file_name: String, output_folder: String, options: Dictionary) -> Dictionary: + var exception_pattern = options.get('exception_pattern', "") + var only_visible_layers = options.get('only_visible_layers', false) + var output_name = ( + file_name if options.get('output_filename') == "" + else options.get('output_filename', file_name) + ) + var basename = _get_file_basename(output_name) + var output_dir = output_folder.replace("res://", "./") + var data_file = "%s/%s.json" % [output_dir, basename] + var sprite_sheet = "%s/%s.png" % [output_dir, basename] + var output = [] + var arguments = _export_command_common_arguments(file_name, data_file, sprite_sheet) + + if not only_visible_layers: + arguments.push_front("--all-layers") + + _add_sheet_type_arguments(arguments, options) + + _add_ignore_layer_arguments(file_name, arguments, exception_pattern) + + var exit_code = _execute(arguments, output) + if exit_code != 0: + printerr('[Popochiu] Aseprite: failed to export spritesheet') + printerr(output) + return {} + + return { + 'data_file': data_file.replace("./", "res://"), + "sprite_sheet": sprite_sheet.replace("./", "res://") + } + + +func export_layers(file_name: String, output_folder: String, options: Dictionary) -> Array: + var exception_pattern = options.get('exception_pattern', "") + var only_visible_layers = options.get('only_visible_layers', false) + var basename = _get_file_basename(file_name) + var layers = list_layers(file_name, only_visible_layers) + var exception_regex = _compile_regex(exception_pattern) + + var output = [] + + for layer in layers: + if layer != "" and (not exception_regex or exception_regex.search(layer) == null): + output.push_back(export_layer(file_name, layer, output_folder, options)) + + return output + + +func export_layer(file_name: String, layer_name: String, output_folder: String, options: Dictionary) -> Dictionary: + var output_prefix = options.get('output_filename', "").strip_edges() + var output_dir = output_folder.replace("res://", "./").strip_edges() + var data_file = "%s/%s%s.json" % [output_dir, output_prefix, layer_name] + var sprite_sheet = "%s/%s%s.png" % [output_dir, output_prefix, layer_name] + var output = [] + var arguments = _export_command_common_arguments(file_name, data_file, sprite_sheet) + arguments.push_front(layer_name) + arguments.push_front("--layer") + + _add_sheet_type_arguments(arguments, options) + + var exit_code = _execute(arguments, output) + if exit_code != 0: + printerr('[Popochiu] Aseprite: Failed to export layer spritesheet. Command output follows:') + print(output) + return {} + + return { + 'data_file': data_file.replace("./", "res://"), + "sprite_sheet": sprite_sheet.replace("./", "res://") + } + + +# IMPROVE: See if we can extract JSON data limited to the single tag +# (so we don't have to reckon offset framerange) +func export_tag(file_name: String, tag_name: String, output_folder: String, options: Dictionary) -> Dictionary: + var output_prefix = options.get('output_filename', "").strip_edges() + var output_dir = output_folder.replace("res://", "./").strip_edges() + var data_file = "%s/%s%s.json" % [output_dir, output_prefix, tag_name] + var sprite_sheet = "%s/%s%s.png" % [output_dir, output_prefix, tag_name] + var output = [] + var arguments = _export_command_common_arguments(file_name, data_file, sprite_sheet) + arguments.push_front(tag_name) + arguments.push_front("--tag") + + _add_sheet_type_arguments(arguments, options) + + var exit_code = _execute(arguments, output) + if exit_code != 0: + printerr('[Popochiu] Aseprite: Failed to export tag spritesheet. Command output follows:') + print(output) + return {} + + return { + 'data_file': data_file.replace("./", "res://"), + "sprite_sheet": sprite_sheet.replace("./", "res://") + } + + +func list_layers(file_name: String, only_visible = false) -> Array: + var output = [] + var arguments = ["-b", "--list-layers", file_name] + + if not only_visible: + arguments.push_front("--all-layers") + + var exit_code = _execute(arguments, output) + + if exit_code != 0: + printerr('[Popochiu] Aseprite: failed listing layers') + printerr(output) + return [] + + return _sanitize_list_output(output) + + +func list_tags(file_name: String) -> Array: + var output = [] + var arguments = ["-b", "--list-tags", file_name] + + var exit_code = _execute(arguments, output) + + if exit_code != 0: + printerr('[Popochiu] Aseprite: failed listing tags') + printerr(output) + return [] + + return _sanitize_list_output(output) + + +func is_valid_spritesheet(content): + return content.has("frames") and content.has("meta") and content.meta.has('image') + + +func get_content_frames(content): + return content.frames if typeof(content.frames) == TYPE_ARRAY else content.frames.values() + + +func get_content_meta_tags(content): + return content.meta.frameTags if content.meta.has("frameTags") else [] + + +func check_command_path(): + # On Linux, MacOS or other *nix platforms, nothing to do + if not OS.get_name() in ["Windows", "UWP"]: + return true + + # On Windows, OS.Execute() calls trigger an uncatchable + # internal error if the invoked executable is not found. + # Since the error is unclear, we have to check that the aseprite + # command is given as a full path and return an error if it's not. + var regex = RegEx.new() + regex.compile("^[A-Z|a-z]:[\\\\|\\/].+\\.exe$") + return \ + regex.search(_get_aseprite_command()) \ + and \ + FileAccess.file_exists(_get_aseprite_command()) + + +func test_command(): + var exit_code = OS.execute(_get_aseprite_command(), ['--version'], [], true) + return exit_code == 0 + + + +# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PRIVATE ░░░░ +func _add_ignore_layer_arguments(file_name: String, arguments: Array, exception_pattern: String): + var layers = _get_exception_layers(file_name, exception_pattern) + if not layers.is_empty(): + for l in layers: + arguments.push_front(l) + arguments.push_front('--ignore-layer') + + +func _add_sheet_type_arguments(arguments: Array, options : Dictionary): + var column_count : int = options.get("column_count", 0) + if column_count > 0: + arguments.push_back("--merge-duplicates") # Yes, this is undocumented + arguments.push_back("--sheet-columns") + arguments.push_back(column_count) + else: + arguments.push_back("--sheet-pack") + + +func _get_exception_layers(file_name: String, exception_pattern: String) -> Array: + var layers = list_layers(file_name) + var regex = _compile_regex(exception_pattern) + if regex == null: + return [] + + var exception_layers = [] + for layer in layers: + if regex.search(layer) != null: + exception_layers.push_back(layer) + + return exception_layers + + +func _sanitize_list_output(output) -> Array: + if output.is_empty(): + return output + + var raw = output[0].split('\n') + var sanitized = [] + for s in raw: + sanitized.append(s.strip_edges()) + return sanitized + + +func _export_command_common_arguments(source_name: String, data_path: String, spritesheet_path: String) -> Array: + return [ + "-b", + "--list-tags", + "--data", + data_path, + "--format", + "json-array", + "--sheet", + spritesheet_path, + source_name + ] + + +func _execute(arguments, output): + return OS.execute(_get_aseprite_command(), arguments, output, true, true) + + +func _get_aseprite_command() -> String: + return PopochiuEditorConfig.get_command() + + +func _get_file_basename(file_path: String) -> String: + return file_path.get_file().trim_suffix('.%s' % file_path.get_extension()) + + +func _compile_regex(pattern): + if pattern == "": + return + + var rgx = RegEx.new() + if rgx.compile(pattern) == OK: + return rgx + + printerr('[Popochiu] exception regex error') diff --git a/addons/popochiu/editor/importers/aseprite/aseprite_controller.gd.uid b/addons/popochiu/editor/importers/aseprite/aseprite_controller.gd.uid new file mode 100644 index 0000000..d5b017d --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/aseprite_controller.gd.uid @@ -0,0 +1 @@ +uid://d1vhl7uqwadfx diff --git a/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd new file mode 100644 index 0000000..20c28ee --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd @@ -0,0 +1,94 @@ +@tool +extends HBoxContainer + +signal tag_state_changed + +const RESULT_CODE = preload("res://addons/popochiu/editor/config/result_codes.gd") + +var _anim_tag_state: Dictionary = {} + +@onready var tag_name_label = $HBoxContainer/TagName +@onready var import_toggle = $Panel/HBoxContainer/Import +@onready var loops_toggle = $Panel/HBoxContainer/Loops +@onready var separator = $Panel/HBoxContainer/Separator +@onready var visible_toggle = $Panel/HBoxContainer/Visible +@onready var clickable_toggle = $Panel/HBoxContainer/Clickable + + +#region Godot ###################################################################################### +func _ready(): + # Common toggle icons + import_toggle.icon = get_theme_icon('Load', 'EditorIcons') + loops_toggle.icon = get_theme_icon('Loop', 'EditorIcons') + # Room-related toggle icons + visible_toggle.icon = get_theme_icon('GuiVisibilityVisible', 'EditorIcons') + clickable_toggle.icon = get_theme_icon('ToolSelect', 'EditorIcons') + + +#endregion + +#region Public ##################################################################################### +func init(tag_cfg: Dictionary): + if tag_cfg.tag_name == null or tag_cfg.tag_name == "": + printerr(RESULT_CODE.get_error_message(RESULT_CODE.ERR_UNNAMED_TAG_DETECTED)) + return false + + _anim_tag_state = _load_default_tag_state() + _anim_tag_state.merge(tag_cfg, true) + _setup_scene() + +func show_prop_buttons(): + separator.visible = true + visible_toggle.visible = true + clickable_toggle.visible = true + + +#endregion + +#region SetGet ##################################################################################### +func get_cfg() -> Dictionary: + return _anim_tag_state + + +#endregion + +#region Private #################################################################################### +func _setup_scene(): + import_toggle.button_pressed = _anim_tag_state.import + loops_toggle.button_pressed = _anim_tag_state.loops + tag_name_label.text = _anim_tag_state.tag_name + visible_toggle.button_pressed = _anim_tag_state.prop_visible + clickable_toggle.button_pressed = _anim_tag_state.prop_clickable + emit_signal("tag_state_changed") + + +func _load_default_tag_state() -> Dictionary: + return { + "tag_name": "", + "import": PopochiuConfig.is_default_animation_import_enabled(), + "loops": PopochiuConfig.is_default_animation_loop_enabled(), + "prop_visible": PopochiuConfig.is_default_animation_prop_visible(), + "prop_clickable": PopochiuConfig.is_default_animation_prop_clickable(), + } + + +func _on_import_toggled(button_pressed): + _anim_tag_state.import = button_pressed + emit_signal("tag_state_changed") + + +func _on_loops_toggled(button_pressed): + _anim_tag_state.loops = button_pressed + emit_signal("tag_state_changed") + + +func _on_visible_toggled(button_pressed): + _anim_tag_state.prop_visible = button_pressed + emit_signal("tag_state_changed") + +func _on_clickable_toggled(button_pressed): + _anim_tag_state.prop_clickable = button_pressed + emit_signal("tag_state_changed") + + +#endregion diff --git a/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd.uid b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd.uid new file mode 100644 index 0000000..6331297 --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd.uid @@ -0,0 +1 @@ +uid://krf8u35pkjn3 diff --git a/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn new file mode 100644 index 0000000..cc20ff8 --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn @@ -0,0 +1,94 @@ +[gd_scene load_steps=6 format=3 uid="uid://rphyltbm12m4"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd" id="1"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_77wem"] + +[sub_resource type="Image" id="Image_vdhps"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_c80ss"] +image = SubResource("Image_vdhps") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_sd1l8"] + +[node name="AnimationTagRow" type="HBoxContainer"] +offset_right = 320.0 +offset_bottom = 20.0 +script = ExtResource("1") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="TagName" type="Label" parent="HBoxContainer"] +layout_mode = 2 +text = "Tag Name" + +[node name="Panel" type="Panel" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxEmpty_77wem") + +[node name="HBoxContainer" type="HBoxContainer" parent="Panel"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -60.0 +offset_bottom = 20.0 +grow_horizontal = 0 + +[node name="Visible" type="Button" parent="Panel/HBoxContainer"] +visible = false +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 3 +tooltip_text = "This prop will be visible" +toggle_mode = true +icon = SubResource("ImageTexture_c80ss") +flat = true + +[node name="Clickable" type="Button" parent="Panel/HBoxContainer"] +visible = false +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 3 +tooltip_text = "This prop will be clickable" +toggle_mode = true +icon = SubResource("ImageTexture_c80ss") +flat = true + +[node name="Separator" type="Panel" parent="Panel/HBoxContainer"] +visible = false +custom_minimum_size = Vector2(1, 0) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_sd1l8") + +[node name="Import" type="Button" parent="Panel/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 3 +tooltip_text = "Import this animation" +toggle_mode = true +icon = SubResource("ImageTexture_c80ss") +flat = true + +[node name="Loops" type="Button" parent="Panel/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 3 +tooltip_text = "Set animation as looping" +toggle_mode = true +icon = SubResource("ImageTexture_c80ss") +flat = true + +[connection signal="toggled" from="Panel/HBoxContainer/Visible" to="." method="_on_visible_toggled"] +[connection signal="toggled" from="Panel/HBoxContainer/Clickable" to="." method="_on_clickable_toggled"] +[connection signal="toggled" from="Panel/HBoxContainer/Import" to="." method="_on_import_toggled"] +[connection signal="toggled" from="Panel/HBoxContainer/Loops" to="." method="_on_loops_toggled"] diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd new file mode 100644 index 0000000..307d3ff --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd @@ -0,0 +1,429 @@ +@tool +extends PanelContainer + +# TODO: review coding standards for those constants +const RESULT_CODE = preload("res://addons/popochiu/editor/config/result_codes.gd") +const LOCAL_OBJ_CONFIG = preload("res://addons/popochiu/editor/config/local_obj_config.gd") +# TODO: this can be specialized, even if for a two buttons... ? +const AnimationTagRow =\ +preload("res://addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd") + +var scene: Node +var target_node: Node +var file_system: EditorFileSystem + +# ---- External logic +var _animation_tag_row_scene: PackedScene =\ +preload("res://addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn") +var _aseprite = preload("../aseprite_controller.gd").new() ## TODO: should be absolute? +# ---- References for children scripts +var _root_node: Node +var _options: Dictionary +# ---- Importer parameters variables +var _source: String = "" +var _tags_cache: Array = [] +var _file_dialog_aseprite: FileDialog +var _output_folder_dialog: FileDialog +var _importing := false +var _output_folder := "" +var _out_folder_default := "[Same as scene]" + + +#region Godot ###################################################################################### +func _ready(): + _set_elements_styles() + + if not PopochiuEditorConfig.aseprite_importer_enabled(): + _show_info() + return + + # Check access to Aseprite executable + var result = _check_aseprite() + if result == RESULT_CODE.SUCCESS: + _show_importer() + else: + PopochiuUtils.print_error(RESULT_CODE.get_error_message(result)) + _show_warning() + + # Load inspector dock configuration from node + var cfg = LOCAL_OBJ_CONFIG.load_config(target_node) + if cfg == null: + _load_default_config() + _set_options_visible(true) + else: + _load_config(cfg) + _set_tags_visible(cfg.get("tags_exp")) + _set_options_visible(cfg.get("op_exp")) + + +#endregion + +#region Private #################################################################################### +func _check_aseprite() -> int: + if not _aseprite.check_command_path(): + return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FULL_PATH + + if not _aseprite.test_command(): + return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FOUND + + return RESULT_CODE.SUCCESS + + +func _list_tags(file: String): + if not _aseprite.check_command_path(): + return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FULL_PATH + if not _aseprite.test_command(): + return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FOUND + return _aseprite.list_tags(file) + + +## TODO: Currently unused. keeping this as reference +## to populate a checkable list of layers +func _list_layers(file: String, only_visibles = false): + if not _aseprite.check_command_path(): + return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FULL_PATH + if not _aseprite.test_command(): + return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FOUND + return _aseprite.list_layers(file, only_visibles) + + +func _load_config(cfg): + if cfg.has("source"): + _set_source(cfg.source) + + _output_folder = cfg.get("o_folder", "") + get_node("%OutFolderButton").text = ( + _output_folder if _output_folder != "" else _out_folder_default + ) + get_node("%OutFileName").text = cfg.get("o_name", "") + get_node("%VisibleLayersCheckButton").set_pressed_no_signal( + cfg.get("only_visible_layers", false) + ) + get_node("%WipeOldAnimationsCheckButton").set_pressed_no_signal( + cfg.get("wipe_old_anims", false) + ) + + _set_tags_visible(cfg.get("tags_exp", false)) + _set_options_visible(cfg.get("op_exp", false)) + _populate_tags(cfg.get("tags", [])) + + +func _save_config(): + _update_tags_cache() + + var cfg := { + "source": _source, + "tags": _tags_cache, + "tags_exp": get_node("%Tags").visible, + "op_exp": get_node("%Options").visible, + "o_folder": _output_folder, + "o_name": get_node("%OutFileName").text, + "only_visible_layers": get_node("%VisibleLayersCheckButton").is_pressed(), + "wipe_old_anims": get_node("%WipeOldAnimationsCheckButton").is_pressed(), + } + + LOCAL_OBJ_CONFIG.save_config(target_node, cfg) + + +func _load_default_config(): + # Reset variables + _source = "" + _tags_cache = [] + _output_folder = "" + + # Empty tags list + _empty_tags_container() + + # Reset inspector fields + get_node("%SourceButton").text = "[empty]" + get_node("%SourceButton").tooltip_text = "" + get_node("%OutFolderButton").text = "[empty]" + get_node("%OutFileName").clear() + get_node("%VisibleLayersCheckButton").set_pressed_no_signal(false) + get_node("%WipeOldAnimationsCheckButton").set_pressed_no_signal( + PopochiuConfig.is_default_wipe_old_anims_enabled() + ) + + +func _set_source(source): + _source = source + get_node("%SourceButton").text = _source + get_node("%SourceButton").tooltip_text = _source + + +func _on_source_pressed(): + _open_source_dialog() + + +func _on_aseprite_file_selected(path): + _set_source(ProjectSettings.localize_path(path)) + _populate_tags(_get_tags_from_source()) + _save_config() + _file_dialog_aseprite.queue_free() + + +func _on_rescan_pressed(): + _populate_tags(\ + _merge_with_cache(_get_tags_from_source())\ + ) + _save_config() + + +func _on_import_pressed(): + if _importing: + return + + _importing = true + _root_node = get_tree().get_edited_scene_root() + + if _source == "": + _show_message("Aseprite file not selected") + _importing = false + return + + _options = { + "source": ProjectSettings.globalize_path(_source), + "tags": _tags_cache, + "output_folder": ( + _output_folder if _output_folder != "" else _root_node.scene_file_path.get_base_dir() + ), + "output_filename": get_node("%OutFileName").text, + "only_visible_layers": get_node("%VisibleLayersCheckButton").is_pressed(), + "wipe_old_animations": get_node("%WipeOldAnimationsCheckButton").is_pressed(), + } + + _save_config() + + +func _on_reset_pressed(): + var _confirmation_dialog = _show_confirmation(\ + "This will reset the importer preferences." + \ + "This cannot be undone! Are you sure?", "Confirmation required!") + _confirmation_dialog.get_ok_button().connect("pressed", Callable(self, "_reset_prefs_metadata")) + + +func _reset_prefs_metadata(): + if target_node.has_meta(LOCAL_OBJ_CONFIG.LOCAL_OBJ_CONFIG_META_NAME): + target_node.remove_meta(LOCAL_OBJ_CONFIG.LOCAL_OBJ_CONFIG_META_NAME) + _load_default_config() + notify_property_list_changed() + + +func _open_source_dialog(): + _file_dialog_aseprite = _create_aseprite_file_selection() + get_parent().add_child(_file_dialog_aseprite) + if _source != "": + _file_dialog_aseprite.set_current_dir( + ProjectSettings.globalize_path( + _source.get_base_dir() + ) + ) + _file_dialog_aseprite.popup_centered_ratio() + + +func _create_aseprite_file_selection(): + var file_dialog = FileDialog.new() + file_dialog.file_mode = FileDialog.FILE_MODE_OPEN_FILE + file_dialog.access = FileDialog.ACCESS_FILESYSTEM + file_dialog.title = "Select Aseprite animation file" + file_dialog.connect("file_selected", Callable(self, "_on_aseprite_file_selected")) + file_dialog.set_filters(PackedStringArray(["*.ase","*.aseprite"])) + return file_dialog + + +func _populate_tags(tags: Array): + ## reset tags container + _empty_tags_container() + + # Add each tag found + for t in tags: + if t.tag_name == "": + continue + + var tag_row: AnimationTagRow = _animation_tag_row_scene.instantiate() + get_node("%Tags").add_child(tag_row) + tag_row.init(t) + tag_row.connect("tag_state_changed", Callable(self, "_save_config")) + _customize_tag_ui(tag_row) + # Invoke customization hook implementable in child classes + _update_tags_cache() + + +func _customize_tag_ui(tagrow: AnimationTagRow): + ## This can be implemented by child classes if necessary + pass + + +func _empty_tags_container(): + # Clean the inspector tags container empty + for tl in get_node("%Tags").get_children(): + get_node("%Tags").remove_child(tl) + tl.queue_free() + + +func _update_tags_cache(): + _tags_cache = _get_tags_from_ui() + + +func _merge_with_cache(tags: Array) -> Array: + var tags_cache_index = {} + var result = [] + for t in _tags_cache: + tags_cache_index[t.tag_name] = t + + for i in tags.size(): + result.push_back( + tags_cache_index[tags[i].tag_name] + if tags_cache_index.has(tags[i].tag_name) + else tags[i] + ) + + return result + + +func _get_tags_from_ui() -> Array: + var tags_list = [] + for tag_row in get_node("%Tags").get_children(): + var tag_row_cfg = tag_row.get_cfg() + if tag_row_cfg.tag_name == "": + continue + tags_list.push_back(tag_row_cfg) + return tags_list + + +func _get_tags_from_source() -> Array: + var tags_found = _list_tags(ProjectSettings.globalize_path(_source)) + if typeof(tags_found) == TYPE_INT: + PopochiuUtils.print_error(RESULT_CODE.get_error_message(tags_found)) + return [] + var tags_list = [] + for t in tags_found: + if t == "": + continue + tags_list.push_back({ + tag_name = t + }) + return tags_list + + +func _show_message( + message: String, title: String = "", object: Object = null, method := "" +): + var warning_dialog = AcceptDialog.new() + + if title != "": + warning_dialog.title = title + + warning_dialog.dialog_text = message + warning_dialog.popup_window = true + + var callback := Callable(warning_dialog, "queue_free") + + if is_instance_valid(object) and not method.is_empty(): + callback = func(): + object.call(method) + + warning_dialog.confirmed.connect(callback) + warning_dialog.close_requested.connect(callback) + + PopochiuEditorHelper.show_dialog(warning_dialog) + + +func _show_confirmation(message: String, title: String = ""): + var _confirmation_dialog = ConfirmationDialog.new() + get_parent().add_child(_confirmation_dialog) + if title != "": + _confirmation_dialog.title = title + _confirmation_dialog.dialog_text = message + _confirmation_dialog.popup_centered() + _confirmation_dialog.connect("close_requested", Callable(_confirmation_dialog, "queue_free")) + return _confirmation_dialog + + +func _on_options_title_toggled(button_pressed): + _set_options_visible(button_pressed) + _save_config() + + +func _set_options_visible(is_visible): + get_node("%Options").visible = is_visible + get_node("%OptionsTitle").icon = ( + PopochiuEditorConfig.get_icon(PopochiuEditorConfig.Icons.EXPANDED) if is_visible + else PopochiuEditorConfig.get_icon(PopochiuEditorConfig.Icons.COLLAPSED) + ) + +func _on_tags_title_toggled(button_pressed: bool) -> void: + _set_tags_visible(button_pressed) + _save_config() + + +func _set_tags_visible(is_visible: bool) -> void: + get_node("%Tags").visible = is_visible + get_node("%TagsTitle").icon = ( + PopochiuEditorConfig.get_icon(PopochiuEditorConfig.Icons.EXPANDED) if is_visible + else PopochiuEditorConfig.get_icon(PopochiuEditorConfig.Icons.COLLAPSED) + ) + +func _on_out_folder_pressed(): + _output_folder_dialog = _create_output_folder_selection() + get_parent().add_child(_output_folder_dialog) + if _output_folder != _out_folder_default: + _output_folder_dialog.current_dir = _output_folder + _output_folder_dialog.popup_centered_ratio() + + +func _create_output_folder_selection(): + var file_dialog = FileDialog.new() + file_dialog.file_mode = FileDialog.FILE_MODE_OPEN_DIR + file_dialog.access = FileDialog.ACCESS_RESOURCES + file_dialog.title = "Select destination folder" + file_dialog.connect("dir_selected", Callable(self, "_on_output_folder_selected")) + return file_dialog + + +func _on_output_folder_selected(path): + _output_folder = path + get_node("%OutFolderButton").text = ( + _output_folder if _output_folder != "" else _out_folder_default + ) + _output_folder_dialog.queue_free() + _save_config() + + +func _set_elements_styles(): + # Set sections title colors according to current theme + var section_color = get_theme_color("prop_section", "Editor") + var section_style = StyleBoxFlat.new() + section_style.set_bg_color(section_color) + get_node("%TagsTitleBar").set("theme_override_styles/panel", section_style) + get_node("%OptionsTitleBar").set("theme_override_styles/panel", section_style) + + # Set style of warning panel + get_node("%WarningPanel").add_theme_stylebox_override( + "panel", + get_node("%WarningPanel").get_theme_stylebox("sub_inspector_bg11", "Editor") + ) + get_node("%WarningLabel").add_theme_color_override("font_color", Color("c46c71")) + + +func _show_info(): + get_node("%Info").visible = true + get_node("%Warning").visible = false + get_node("%Importer").visible = false + + +func _show_warning(): + get_node("%Info").visible = false + get_node("%Warning").visible = true + get_node("%Importer").visible = false + + +func _show_importer(): + get_node("%Info").visible = false + get_node("%Warning").visible = false + get_node("%Importer").visible = true + +# TODO: Introduce layer selection list, more or less as tags + + +#endregion diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd.uid b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd.uid new file mode 100644 index 0000000..1585023 --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd.uid @@ -0,0 +1 @@ +uid://c5o55inhq2abl diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.tscn b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.tscn new file mode 100644 index 0000000..87a533e --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.tscn @@ -0,0 +1,225 @@ +[gd_scene load_steps=4 format=3 uid="uid://bcanby6n3eahm"] + +[sub_resource type="StyleBoxEmpty" id="1"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wwoxk"] +bg_color = Color(0, 0, 0, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ctsm1"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.364706, 0.364706, 1) +draw_center = false +corner_detail = 1 + +[node name="AsepriteImporterInspectorDock" type="PanelContainer"] +offset_right = 14.0 +offset_bottom = 14.0 +theme_override_styles/panel = SubResource("1") + +[node name="Margin" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_top = 2 +theme_override_constants/margin_bottom = 2 + +[node name="Importer" type="VBoxContainer" parent="Margin"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="Source" type="HBoxContainer" parent="Margin/Importer"] +layout_mode = 2 +tooltip_text = "Location of the Aseprite (*.ase, *.aseprite) source file." + +[node name="Label" type="Label" parent="Margin/Importer/Source"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +text = "Aseprite File" + +[node name="SourceButton" type="Button" parent="Margin/Importer/Source"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +text = "[empty]" +clip_text = true + +[node name="RescanButton" type="Button" parent="Margin/Importer/Source"] +unique_name_in_owner = true +layout_mode = 2 +text = "Rescan" + +[node name="TagsTitleBar" type="PanelContainer" parent="Margin/Importer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_wwoxk") + +[node name="TagsTitle" type="Button" parent="Margin/Importer/TagsTitleBar"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_colors/font_pressed_color = Color(0.8, 0.807843, 0.827451, 1) +toggle_mode = true +text = "Animation tags" + +[node name="Tags" type="VBoxContainer" parent="Margin/Importer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="OptionsTitleBar" type="PanelContainer" parent="Margin/Importer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_wwoxk") + +[node name="OptionsTitle" type="Button" parent="Margin/Importer/OptionsTitleBar"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_colors/font_pressed_color = Color(0.8, 0.807843, 0.827451, 1) +toggle_mode = true +text = "Options" + +[node name="Options" type="VBoxContainer" parent="Margin/Importer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="OutFolder" type="HBoxContainer" parent="Margin/Importer/Options"] +layout_mode = 2 +tooltip_text = "Location where the spritesheet file should be saved." + +[node name="Label" type="Label" parent="Margin/Importer/Options/OutFolder"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +text = "Output folder" + +[node name="OutFolderButton" type="Button" parent="Margin/Importer/Options/OutFolder"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +text = "[empty]" +clip_text = true + +[node name="OutFile" type="HBoxContainer" parent="Margin/Importer/Options"] +layout_mode = 2 +tooltip_text = "Base filename for spritesheet. In case the layer option is used, this works as a prefix to the layer name." + +[node name="Label" type="Label" parent="Margin/Importer/Options/OutFile"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +text = "Output file name" + +[node name="OutFileName" type="LineEdit" parent="Margin/Importer/Options/OutFile"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 + +[node name="VisibleLayers" type="HBoxContainer" parent="Margin/Importer/Options"] +layout_mode = 2 +tooltip_text = "If active, layers not visible in the source file won't be included in the final image." + +[node name="Label" type="Label" parent="Margin/Importer/Options/VisibleLayers"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +text = "Only visible layers" + +[node name="VisibleLayersCheckButton" type="CheckButton" parent="Margin/Importer/Options/VisibleLayers"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 + +[node name="WipeOldAnimations" type="HBoxContainer" parent="Margin/Importer/Options"] +layout_mode = 2 +tooltip_text = "If active, layers not visible in the source file won't be included in the final image." + +[node name="Label" type="Label" parent="Margin/Importer/Options/WipeOldAnimations"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +tooltip_text = "Set this to OFF if you want to add new animations on top of old ones. Anims with same name will be updated." +mouse_filter = 0 +text = "Wipe old animations" + +[node name="WipeOldAnimationsCheckButton" type="CheckButton" parent="Margin/Importer/Options/WipeOldAnimations"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 + +[node name="Import" type="Button" parent="Margin/Importer"] +layout_mode = 2 +text = "Import" + +[node name="Reset" type="Button" parent="Margin/Importer"] +layout_mode = 2 +text = "Reset Preferences" + +[node name="Warning" type="VBoxContainer" parent="Margin"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="Margin/Warning"] +layout_mode = 2 + +[node name="WarningPanel" type="Panel" parent="Margin/Warning/HBoxContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(222, 50) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_ctsm1") + +[node name="WarningLabel" type="Label" parent="Margin/Warning/HBoxContainer/WarningPanel"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 42) +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +theme_override_colors/font_color = Color(0.768627, 0.423529, 0.443137, 1) +text = "Error loading Aseprite Importer! +Check Output panel for details." +horizontal_alignment = 1 + +[node name="Info" type="VBoxContainer" parent="Margin"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="Margin/Info"] +layout_mode = 2 + +[node name="InfoPanel" type="Panel" parent="Margin/Info/HBoxContainer"] +custom_minimum_size = Vector2(222, 50) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_ctsm1") + +[node name="InfoLabel" type="Label" parent="Margin/Info/HBoxContainer/InfoPanel"] +custom_minimum_size = Vector2(0, 42) +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +text = "Aseprite Importer disabled. +Can be enabled in Editor Settings." + +[connection signal="pressed" from="Margin/Importer/Source/SourceButton" to="." method="_on_source_pressed"] +[connection signal="pressed" from="Margin/Importer/Source/RescanButton" to="." method="_on_rescan_pressed"] +[connection signal="toggled" from="Margin/Importer/TagsTitleBar/TagsTitle" to="." method="_on_tags_title_toggled"] +[connection signal="toggled" from="Margin/Importer/OptionsTitleBar/OptionsTitle" to="." method="_on_options_title_toggled"] +[connection signal="pressed" from="Margin/Importer/Options/OutFolder/OutFolderButton" to="." method="_on_out_folder_pressed"] +[connection signal="focus_exited" from="Margin/Importer/Options/OutFile/OutFileName" to="." method="_save_config"] +[connection signal="pressed" from="Margin/Importer/Options/VisibleLayers/VisibleLayersCheckButton" to="." method="_save_config"] +[connection signal="pressed" from="Margin/Importer/Options/WipeOldAnimations/WipeOldAnimationsCheckButton" to="." method="_save_config"] +[connection signal="pressed" from="Margin/Importer/Import" to="." method="_on_import_pressed"] +[connection signal="pressed" from="Margin/Importer/Reset" to="." method="_on_reset_pressed"] diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd new file mode 100644 index 0000000..1e3a7a3 --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd @@ -0,0 +1,55 @@ +@tool +extends "res://addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd" + +var _animation_player_path: String +var _animation_creator = preload( + "res://addons/popochiu/editor/importers/aseprite/animation_creator.gd" +).new() + +#region Godot ###################################################################################### +func _ready(): + if not target_node.has_node("AnimationPlayer"): + PopochiuUtils.print_error( + RESULT_CODE.get_error_message(RESULT_CODE.ERR_NO_ANIMATION_PLAYER_FOUND) + ) + return + + _animation_player_path = target_node.get_node("AnimationPlayer").get_path() + + # Instantiate animation creator + _animation_creator.init(_aseprite, file_system) + + super() + + +#endregion + +#region Private #################################################################################### +func _on_import_pressed(): + # Set everything up + # This will populate _root_node and _options class variables + super() + + if _animation_player_path == "" or not _root_node.has_node(_animation_player_path): + _show_message("AnimationPlayer not found") + _importing = false + return + + var result = await _animation_creator.create_character_animations( + target_node, _root_node.get_node(_animation_player_path), _options + ) + _importing = false + + if typeof(result) == TYPE_INT and result != RESULT_CODE.SUCCESS: + PopochiuUtils.print_error(RESULT_CODE.get_error_message(result)) + _show_message("Some errors occurred. Please check output panel.", "Warning!") + else: + _show_message("%d animation tags processed." % [_tags_cache.size()], "Done!") + + +func _customize_tag_ui(tag_row: AnimationTagRow): + # Nothing special has to be done for Character tags + pass + + +#endregion diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd.uid b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd.uid new file mode 100644 index 0000000..7b209cc --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd.uid @@ -0,0 +1 @@ +uid://cgc5psgxjoc17 diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd new file mode 100644 index 0000000..7b036a9 --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd @@ -0,0 +1,117 @@ +@tool +extends "res://addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd" + +var _animation_creator = preload(\ +"res://addons/popochiu/editor/importers/aseprite/animation_creator.gd").new() + + +#region Godot ###################################################################################### +func _ready(): + # Instantiate animation creator + _animation_creator.init(_aseprite, file_system) + + super() + + +#endregion + +#region Private #################################################################################### +func _on_import_pressed(): + # Set everything up + # This will populate _root_node and _options class variables + super() + + var props_container = _root_node.get_node("Props") + var result: int = RESULT_CODE.SUCCESS + + # Create a prop for each tag that must be imported + # and populate it with the right sprite + for tag in _options.get("tags"): + # Ignore unwanted tags + if not tag.import: continue + + # Always convert to PascalCase as a standard + # TODO: check Godot 4 standards, I can't find info + var prop_name: String = tag.tag_name.to_pascal_case() + + # In case the prop is there, use the one we already have + var prop = props_container.get_node_or_null(prop_name) + if prop == null: + # Create a new prop if necessary, specifying the + # interaction flags. + prop = _create_prop(prop_name, tag.prop_clickable, tag.prop_visible) + else: + # Force flags (a bit redundant but they may have been changed + # in the Importer interface, for already imported props) + prop.clickable = tag.prop_clickable + prop.visible = tag.prop_visible + + prop.set_meta("ANIM_NAME", tag.tag_name) + + for prop in props_container.get_children(): + if not prop.has_meta("ANIM_NAME"): continue + # TODO: check if animation player exists in prop, if not add it + # same for Sprite2D even if it should be there... + + # Make the output folder match the prop's folder + _options.output_folder = prop.scene_file_path.get_base_dir() + + # Import a single tag animation + result = await _animation_creator.create_prop_animations( + prop, + prop.get_meta("ANIM_NAME"), + _options + ) + + for prop in props_container.get_children(): + if not prop.has_meta("ANIM_NAME"): continue + # Save the prop + result = await _save_prop(prop) + + # TODO: maybe check if this is better done with signals + _importing = false + + if typeof(result) == TYPE_INT and result != RESULT_CODE.SUCCESS: + PopochiuUtils.print_error(RESULT_CODE.get_error_message(result)) + _show_message("Some errors occurred. Please check output panel.", "Warning!") + else: + await get_tree().create_timer(0.1).timeout + + # Once the popup is closed, call _clean_props() + _show_message( + "%d animation tags processed." % [_tags_cache.size()], + "Done!" + ) + + +func _customize_tag_ui(tag_row: AnimationTagRow): + # Show props-related buttons if we are in a room + tag_row.show_prop_buttons() + + +func _create_prop(name: String, is_clickable: bool = true, is_visible: bool = true): + var factory = PopochiuPropFactory.new() + var param := PopochiuPropFactory.PopochiuPropFactoryParam.new() + param.obj_name = name + param.room = _root_node + param.is_interactive = is_clickable + param.is_visible = is_visible + + if factory.create(param) != ResultCodes.SUCCESS: + return + + return factory.get_obj_scene() + +func _save_prop(prop: PopochiuProp): + var packed_scene: PackedScene = PackedScene.new() + packed_scene.pack(prop) + if ResourceSaver.save(packed_scene, prop.scene_file_path) != OK: + PopochiuUtils.print_error( + "Couldn't save animations for prop %s at %s" % + [prop.name, prop.scene_file_path] + ) + return ResultCodes.ERR_CANT_SAVE_OBJ_SCENE + return ResultCodes.SUCCESS + + +#endregion diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd.uid b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd.uid new file mode 100644 index 0000000..2dbd93b --- /dev/null +++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd.uid @@ -0,0 +1 @@ +uid://cv4mdldfurgpc diff --git a/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd b/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd new file mode 100644 index 0000000..29981f0 --- /dev/null +++ b/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd @@ -0,0 +1,46 @@ +extends EditorInspectorPlugin ## TODO: create a base class with pointer variables + +const DOCKS_PATH := "res://addons/popochiu/editor/importers/aseprite/docks/" +const INSPECTOR_DOCK = preload(DOCKS_PATH + "aseprite_importer_inspector_dock.tscn") +const CONFIG_SCRIPT = preload("res://addons/popochiu/editor/config/config.gd") +const INSPECTOR_DOCK_CHARACTER := DOCKS_PATH + "aseprite_importer_inspector_dock_character.gd" +const INSPECTOR_DOCK_ROOM := DOCKS_PATH + "aseprite_importer_inspector_dock_room.gd" + +var _target_node: Node + + +#region Godot ###################################################################################### +func _can_handle(object): + if object.has_method("get_parent") and object.get_parent() is Node2D: + return false + + return object is PopochiuCharacter || object is PopochiuRoom #|| object is PopochiuInventoryItem + + +func _parse_begin(object: Object): + # Fix showing error messages in Output when inspecting nodes in the Debugger + if not object is Node: return + + _target_node = object + + +func _parse_property(object, type, name, hint_type, hint_string, usage_flags, wide) -> bool: + if object.get_class() == "EditorDebuggerRemoteObject": + return false + if name != 'popochiu_placeholder': + return false + # Instantiate and configure the dock + var dock = INSPECTOR_DOCK.instantiate() + # Load the specific script in the dock + if object is PopochiuCharacter: + dock.set_script(load(INSPECTOR_DOCK_CHARACTER)) + if object is PopochiuRoom: + dock.set_script(load(INSPECTOR_DOCK_ROOM)) + dock.target_node = object + dock.file_system = EditorInterface.get_resource_filesystem() + # Add the dock to the inspector + add_custom_control(dock) + return true + + +#endregion diff --git a/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd.uid b/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd.uid new file mode 100644 index 0000000..c4b4aef --- /dev/null +++ b/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd.uid @@ -0,0 +1 @@ +uid://dpianc4xo6kcl diff --git a/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd b/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd new file mode 100644 index 0000000..3757f52 --- /dev/null +++ b/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd @@ -0,0 +1,52 @@ +extends EditorInspectorPlugin + + +#region Godot ###################################################################################### +func _can_handle(object: Object) -> bool: + return object is PopochiuAudioCue + + +func _parse_property( + object: Object, + type, + path: String, + hint, + hint_text: String, + usage, + wide: bool +) -> bool: + if not object is PopochiuAudioCue or path != "bus": + return false + + var ep := EditorProperty.new() + var ob := OptionButton.new() + + _update_buses_list(ob, object) + + ob.item_selected.connect(_update_audio_cue_bus.bind(object)) + ob.pressed.connect(_update_buses_list.bind(ob, object)) + + ep.add_child(ob) + add_property_editor(path, ep) + + return true + + +#endregion + +#region Private #################################################################################### +func _update_audio_cue_bus(idx: int, audio_cue: PopochiuAudioCue) -> void: + audio_cue.bus = AudioServer.get_bus_name(idx) + ResourceSaver.save(audio_cue, audio_cue.resource_path) + + +func _update_buses_list(ob: OptionButton, pac: PopochiuAudioCue) -> void: + ob.clear() + + for idx in AudioServer.bus_count: + ob.add_item(AudioServer.get_bus_name(idx), idx) + + ob.selected = AudioServer.get_bus_index(pac.bus) + + +#endregion diff --git a/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd.uid b/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd.uid new file mode 100644 index 0000000..58cefd1 --- /dev/null +++ b/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd.uid @@ -0,0 +1 @@ +uid://d0emjgqvommw4 diff --git a/addons/popochiu/editor/inspector/character_inspector_plugin.gd b/addons/popochiu/editor/inspector/character_inspector_plugin.gd new file mode 100644 index 0000000..78caecb --- /dev/null +++ b/addons/popochiu/editor/inspector/character_inspector_plugin.gd @@ -0,0 +1,83 @@ +extends EditorInspectorPlugin + + +#region Virtual #################################################################################### +func _can_handle(object: Object) -> bool: + if object is PopochiuCharacter: + return true + return false + + +func _parse_begin(object: Object) -> void: + if object.get_class() == "EditorDebuggerRemoteObject": + return + + if not object.get_parent() is Node2D: return + + var panel := PanelContainer.new() + var hbox := HBoxContainer.new() + var button := Button.new() + + hbox.custom_minimum_size.y = 42.0 + button.text = "* Open Node' scene to edit its properties" + button.size_flags_horizontal = Control.SIZE_EXPAND_FILL + button.alignment = HORIZONTAL_ALIGNMENT_CENTER + button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND + + panel.add_theme_stylebox_override( + "panel", + panel.get_theme_stylebox("sub_inspector_bg11", "Editor") + ) + button.add_theme_color_override("font_color", Color("c46c71")) + button.add_theme_color_override("font_color_hover", Color("c46c71")) + button.add_theme_color_override("font_color_pressed", Color("c46c71")) + + button.pressed.connect( + _open_scene.bind((object as PopochiuCharacter).scene_file_path), + CONNECT_DEFERRED + ) + + hbox.add_child(button) + panel.add_child(hbox) + + add_custom_control(panel) + + +func _parse_property( + object: Object, + type, + path: String, + hint, + hint_text: String, + usage, + wide: bool +) -> bool: + if object.get_class() == "EditorDebuggerRemoteObject": + return false + + # NOTE: We could add this as an option of the plugin settings. So devs can add extra properties + # if needed. + if object and object.get_parent() is Node2D and not path in [ + "baseline", + "walk_to_point", + "look_at_point", + "position", + "visible", + "modulate", + "self_modulate", + "light_mask", + ]: + return true + + return false + + +#endregion + +#region Private #################################################################################### +func _open_scene(path: String) -> void: + EditorInterface.set_main_screen_editor("2D") + EditorInterface.open_scene_from_path(path) + + +#endregion diff --git a/addons/popochiu/editor/inspector/character_inspector_plugin.gd.uid b/addons/popochiu/editor/inspector/character_inspector_plugin.gd.uid new file mode 100644 index 0000000..c6cd6fb --- /dev/null +++ b/addons/popochiu/editor/inspector/character_inspector_plugin.gd.uid @@ -0,0 +1 @@ +uid://m7hkqdx4jhem diff --git a/addons/popochiu/editor/inspector/prop_inspector_plugin.gd b/addons/popochiu/editor/inspector/prop_inspector_plugin.gd new file mode 100644 index 0000000..4a06c26 --- /dev/null +++ b/addons/popochiu/editor/inspector/prop_inspector_plugin.gd @@ -0,0 +1,63 @@ +extends EditorInspectorPlugin + + +#region Virtual #################################################################################### +func _can_handle(object: Object) -> bool: + if object is PopochiuProp: + return true + return false + + +func _parse_property( + object: Object, + type, + path: String, + hint, + hint_text: String, + usage, + wide: bool +) -> bool: + if ( + object.get_class() == "EditorDebuggerRemoteObject" + or object is not PopochiuProp + or path != "link_to_item" + ): + return false + + var ep := EditorProperty.new() + var ob := OptionButton.new() + + _update_items_list(ob, object) + + ob.item_selected.connect(_update_link_to_item.bind(ob, object)) + ob.pressed.connect(_update_items_list.bind(ob, object)) + + ep.add_child(ob) + add_property_editor(path, ep) + + return true + + +#endregion + +#region Private #################################################################################### +func _update_items_list(ob: OptionButton, prop: PopochiuProp) -> void: + ob.clear() + var inventory_items := PopochiuResources.get_section_keys("inventory_items") + var keys_ids_map := {} + + inventory_items.sort() + ob.add_item("") + for key: String in inventory_items: + keys_ids_map[key] = ob.item_count + ob.add_item(key) + + if keys_ids_map.has(prop.link_to_item): + ob.selected = ob.get_item_index(keys_ids_map[prop.link_to_item]) + + +func _update_link_to_item(idx: int, ob: OptionButton, prop: PopochiuProp) -> void: + prop.link_to_item = ob.get_item_text(idx) + + +#endregion diff --git a/addons/popochiu/editor/inspector/prop_inspector_plugin.gd.uid b/addons/popochiu/editor/inspector/prop_inspector_plugin.gd.uid new file mode 100644 index 0000000..3d8a8ff --- /dev/null +++ b/addons/popochiu/editor/inspector/prop_inspector_plugin.gd.uid @@ -0,0 +1 @@ +uid://dsuhln67g2d8k diff --git a/addons/popochiu/editor/main_dock/popochiu_dock.gd b/addons/popochiu/editor/main_dock/popochiu_dock.gd new file mode 100644 index 0000000..beb33c9 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_dock.gd @@ -0,0 +1,117 @@ +@tool +extends Panel + +signal move_folders_pressed + +@onready var tab_container: TabContainer = %TabContainer +@onready var tab_main: VBoxContainer = %Main +@onready var tab_room: VBoxContainer = %Room +@onready var tab_audio: VBoxContainer = %Audio +@onready var tab_gui: VBoxContainer = %GUI +# ---- FOOTER -------------------------------------------------------------------------------------- +@onready var version: Label = %Version +@onready var btn_setup: Button = %BtnSetup +@onready var btn_docs: Button = %BtnDocs + + +#region Godot ###################################################################################### +func _ready() -> void: + version.text = "v" + PopochiuResources.get_version() + btn_setup.icon = get_theme_icon("Edit", "EditorIcons") + btn_docs.icon = get_theme_icon("HelpSearch", "EditorIcons") + + # Set the Main tab selected by default + tab_container.current_tab = 0 + + # Hide the GUI tab while we decide how it will work based on devs feedback + tab_container.set_tab_hidden(tab_gui.get_index(), true) + + # Connect to children's signals + tab_container.tab_changed.connect(_on_tab_changed) + btn_setup.pressed.connect(open_setup) + btn_docs.pressed.connect(OS.shell_open.bind(PopochiuResources.DOCUMENTATION)) + + # Connect to parent signals + get_tree().node_added.connect(_check_node) + + +#endregion + +#region Public ##################################################################################### +func fill_data() -> void: + tab_main.fill_data() + tab_audio.fill_data() + + +func scene_changed(scene_root: Node) -> void: + if not is_instance_valid(tab_room): return + tab_room.scene_changed(scene_root) + + # TODO: Uncomment these lines when working on the GUI tab again + #if not is_instance_valid(tab_gui): return + #tab_gui.on_scene_changed(scene_root) + + if ( + not scene_root + or ( + not scene_root is PopochiuRoom + # TODO: Uncomment this line when working on the GUI tab again + #and not scene_root.scene_file_path == PopochiuResources.GUI_GAME_SCENE + ) + ): + # Open the Popochiu Main tab if the opened scene in the Editor2D is not a PopochiuRoom nor + # the GUI scene + tab_container.current_tab = 0 + + +func scene_closed(filepath: String) -> void: + if not is_instance_valid(tab_room): return + tab_room.scene_closed(filepath) + check_open_scenes() + + +func search_audio_files() -> void: + if not is_instance_valid(tab_audio): return + + tab_audio.search_audio_files() + + +func open_setup() -> void: + PopochiuEditorHelper.show_setup() + + +## If there are no other opened scenes in the Editor, this function connects to +## [signal EditorSelection.selection_changed] in order to make sure the Popochiu dock behaves as +## expected when the [signal EditorPlugin.scene_changed] signal is not emitted. +func check_open_scenes() -> void: + # Fixes #273: Since Godot is not triggering the EditorPlugin.scene_changed signal when opening a + # scene when no other scenes are opened, listen to the EditorSelection.selection_changed signal + await get_tree().process_frame + if EditorInterface.get_open_scenes().is_empty(): + EditorInterface.get_selection().selection_changed.connect(_on_editor_selection_changed) + + +#endregion + +#region Private #################################################################################### +func _on_tab_changed(tab: int) -> void: + if tab == tab_main.get_index(): + tab_main.check_data() + + if tab == tab_gui.get_index(): + tab_gui.open_gui_scene() + + +func _check_node(node: Node) -> void: + if node is PopochiuCharacter and node.get_parent() is Node2D: + # The node is a PopochiuCharacter in a room + node.set_name.call_deferred("Character%s *" % node.script_name) + + +func _on_editor_selection_changed() -> void: + if EditorInterface.get_edited_scene_root(): + EditorInterface.get_selection().selection_changed.disconnect(_on_editor_selection_changed) + scene_changed(EditorInterface.get_edited_scene_root()) + + +#endregion diff --git a/addons/popochiu/editor/main_dock/popochiu_dock.gd.uid b/addons/popochiu/editor/main_dock/popochiu_dock.gd.uid new file mode 100644 index 0000000..dc0e47c --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_dock.gd.uid @@ -0,0 +1 @@ +uid://bcwtfohnkna8t diff --git a/addons/popochiu/editor/main_dock/popochiu_dock.tscn b/addons/popochiu/editor/main_dock/popochiu_dock.tscn new file mode 100644 index 0000000..a9c04fa --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_dock.tscn @@ -0,0 +1,100 @@ +[gd_scene load_steps=8 format=3 uid="uid://bardo4kb80rvg"] + +[ext_resource type="PackedScene" uid="uid://bynwdds8o3tcx" path="res://addons/popochiu/editor/main_dock/tab_main/tab_main.tscn" id="2_oxyje"] +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_dock.gd" id="7"] +[ext_resource type="PackedScene" uid="uid://4etgd0rwjgct" path="res://addons/popochiu/editor/main_dock/tab_gui/tab_gui.tscn" id="10_82goo"] +[ext_resource type="PackedScene" uid="uid://q1bjkxavt2ay" path="res://addons/popochiu/editor/main_dock/tab_room/tab_room.tscn" id="12"] +[ext_resource type="PackedScene" uid="uid://bpj8jlet25coy" path="res://addons/popochiu/editor/main_dock/tab_audio/tab_audio.tscn" id="13"] + +[sub_resource type="Image" id="Image_sgf6r"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_32xut"] +image = SubResource("Image_sgf6r") + +[node name="Popochiu" type="Panel"] +clip_contents = true +custom_minimum_size = Vector2(340, 0) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("7") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="TabContainer" type="TabContainer" parent="MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +current_tab = 0 + +[node name="Main" parent="MarginContainer/VBoxContainer/TabContainer" instance=ExtResource("2_oxyje")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Room" parent="MarginContainer/VBoxContainer/TabContainer" instance=ExtResource("12")] +unique_name_in_owner = true +visible = false +layout_mode = 2 +focus_mode = 2 +metadata/_tab_index = 1 + +[node name="Audio" parent="MarginContainer/VBoxContainer/TabContainer" instance=ExtResource("13")] +unique_name_in_owner = true +visible = false +layout_mode = 2 +focus_mode = 2 +metadata/_tab_index = 2 + +[node name="GUI" parent="MarginContainer/VBoxContainer/TabContainer" instance=ExtResource("10_82goo")] +unique_name_in_owner = true +visible = false +layout_mode = 2 +metadata/_tab_index = 3 + +[node name="FooterPanel" type="PanelContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/FooterPanel"] +layout_mode = 2 +size_flags_vertical = 3 +alignment = 2 + +[node name="Version" type="Label" parent="MarginContainer/VBoxContainer/FooterPanel/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "v2.0.1" + +[node name="BtnSetup" type="Button" parent="MarginContainer/VBoxContainer/FooterPanel/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Opens wiki in web browser" +text = "Setup" +icon = SubResource("ImageTexture_32xut") + +[node name="BtnDocs" type="Button" parent="MarginContainer/VBoxContainer/FooterPanel/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Opens wiki in web browser" +text = "Documentation" +icon = SubResource("ImageTexture_32xut") diff --git a/addons/popochiu/editor/main_dock/popochiu_filter.gd b/addons/popochiu/editor/main_dock/popochiu_filter.gd new file mode 100644 index 0000000..18ebf6f --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_filter.gd @@ -0,0 +1,51 @@ +@tool +extends LineEdit + +var groups := {}: set = set_groups + + +# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ GODOT ░░░░ +func _ready() -> void: + right_icon = get_theme_icon('Search', 'EditorIcons') + + +# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ SET & GET ░░░░ +func set_groups(value: Dictionary) -> void: + groups = value + + if groups: + text_changed.connect( + _filter_rows.bind(groups), + CONNECT_REFERENCE_COUNTED + ) + + +# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PRIVATE ░░░░ +# `source` is one of the `_types` dictionaries in PopochiuDock, TabRoom and +# TabAudio +func _filter_rows(new_text: String, source: Dictionary) -> void: + for type_dic in source.values(): + type_dic.group.show() + + var title_in_filter := false + + if type_dic.group.title.findn(new_text) > -1: + title_in_filter = true + + var hidden_rows := 0 + + # type_dic.group is a PopochiuGroup + var rows: Array = type_dic.group.get_elements() + + for row in rows: + row.show() + + if new_text.is_empty(): continue + + if (row as Control).name.findn(new_text) < 0\ + and not title_in_filter: + hidden_rows += 1 + row.hide() + + if hidden_rows == rows.size() and not new_text.is_empty(): + type_dic.group.hide() diff --git a/addons/popochiu/editor/main_dock/popochiu_filter.gd.uid b/addons/popochiu/editor/main_dock/popochiu_filter.gd.uid new file mode 100644 index 0000000..47b8209 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_filter.gd.uid @@ -0,0 +1 @@ +uid://l0id2f7cqbkj diff --git a/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg b/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg new file mode 100644 index 0000000..fe638c5 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg.import b/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg.import new file mode 100644 index 0000000..111d317 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://uwjkfsrpfx3e" +path="res://.godot/imported/popochiu_group.svg-55d153202c16f767328f8314e84a5c37.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg" +dest_files=["res://.godot/imported/popochiu_group.svg-55d153202c16f767328f8314e84a5c37.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd new file mode 100644 index 0000000..d5550bb --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd @@ -0,0 +1,199 @@ +@tool +@icon("res://addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg") +class_name PopochiuGroup +extends PanelContainer + +signal create_clicked + +const PopochiuRow := preload("res://addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd") + +@export var icon: Texture2D : set = set_icon +@export var is_open := true : set = set_is_open +@export var color: Color = Color("999999") : set = set_color +@export var title := "Group" : set = set_title +@export var can_create := true +@export var create_text := "" +@export var target_list: NodePath = "" +@export var custom_title_count := false + +var _external_list: VBoxContainer = null + +@onready var header: PanelContainer = %Header +@onready var arrow: TextureRect = %Arrow +@onready var trt_icon: TextureRect = %Icon +@onready var lbl_title: Label = %Title +@onready var body: Container = %Body +@onready var btn_create: Button = %BtnCreate +@onready var list: VBoxContainer = %List + + +#region Godot ###################################################################################### +func _ready() -> void: + # Establecer estado inicial + add_theme_stylebox_override("panel", get_theme_stylebox("panel").duplicate()) + (get_theme_stylebox("panel") as StyleBoxFlat).border_color = color + + if is_instance_valid(icon): + trt_icon.texture = icon + + lbl_title.text = title + btn_create.icon = get_theme_icon("Add", "EditorIcons") + btn_create.text = create_text + self.is_open = list.get_child_count() > 0 + + if not can_create: + btn_create.hide() + + header.gui_input.connect(_on_input) + list.resized.connect(_update_child_count) + btn_create.pressed.connect(emit_signal.bind("create_clicked")) + + if target_list: + _external_list = get_node(target_list) as VBoxContainer + self.is_open = _external_list.get_child_count() > 0 + + +#endregion + +#region Public ##################################################################################### +func clear_list() -> void: + for c in list.get_children(): + # Fix #216: Delete the row immediately so that it does not interfere with the creation of + # other rows that may have the same name as it + c.free() + + +func add(node: Node, sort := false) -> void: + if sort: + node.ready.connect(_order_list.bind(node)) + + list.add_child(node) + + btn_create.disabled = false + + if not is_open: + self.is_open = true + + +func clear_favs() -> void: + for popochiu_row: PopochiuRow in list.get_children(): + popochiu_row.clear_tag() + + +func disable_create() -> void: + btn_create.disabled = true + + +func enable_create() -> void: + btn_create.disabled = false + + +func get_elements() -> Array: + return list.get_children() + + +func remove_by_name(node_name: String) -> void: + if list.has_node(node_name): + var node: HBoxContainer = list.get_node(node_name) + + list.remove_child(node) + node.free() + + +func add_header_button(btn: Button) -> void: + btn_create.add_sibling(btn) + + +func set_title_count(count: int, max_count := 0) -> void: + if max_count > 0: + lbl_title.text = "%s (%d/%d)" % [title, count, max_count] + else: + lbl_title.text = "%s (%d)" % [title, count] + + +func get_by_name(node_name: String) -> HBoxContainer: + if list.has_node(node_name): + return list.get_node(node_name) + return null + + +#endregion + +#region SetGet ##################################################################################### +func set_icon(value: Texture2D) -> void: + icon = value + + if is_instance_valid(trt_icon): + trt_icon.texture = value + + +func set_is_open(value: bool) -> void: + is_open = value + + _toggled(value) + + +func set_color(value: Color) -> void: + color = value + + if is_instance_valid(header): + (get_theme_stylebox("panel") as StyleBoxFlat).border_color = value + + +func set_title(value: String) -> void: + title = value + + if is_instance_valid(lbl_title): + lbl_title.text = value + + +#endregion + +#region Private #################################################################################### +func _on_input(event: InputEvent) -> void: + var mouse_event: = event as InputEventMouseButton + if mouse_event and mouse_event.button_index == MOUSE_BUTTON_LEFT \ + and mouse_event.pressed: + is_open = !is_open + _toggled(is_open) + + +func _toggled(button_pressed: bool) -> void: + if is_instance_valid(arrow): + arrow.texture = ( + get_theme_icon("GuiTreeArrowDown", "EditorIcons") if button_pressed + else get_theme_icon("GuiTreeArrowRight", "EditorIcons") + ) + + if is_instance_valid(body): + if button_pressed: body.show() + else: body.hide() + + if is_instance_valid(_external_list): + _external_list.visible = button_pressed + + +func _update_child_count() -> void: + if custom_title_count: return + + if is_instance_valid(lbl_title): + var children := list.get_child_count() + lbl_title.text = title + (" (%d)" % children) if children > 1 else title + + +func _order_list(node: Node) -> void: + node.ready.disconnect(_order_list) + + # Place the new row in its place alphabetically + var place_before: Node = null + for row in list.get_children(): + if str(node.name) < str(row.name): + place_before = row + break + + if not place_before: return + + list.move_child(node, place_before.get_index()) + + +#endregion diff --git a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd.uid b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd.uid new file mode 100644 index 0000000..aec403c --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd.uid @@ -0,0 +1 @@ +uid://dfejejptym3da diff --git a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn new file mode 100644 index 0000000..13c7e5d --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=6 format=3 uid="uid://b55ialbvpilxv"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd" id="1_lumyt"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qhsn2"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t8mu1"] +content_margin_left = 0.0 +content_margin_top = 0.0 +content_margin_right = 0.0 +content_margin_bottom = 0.0 +bg_color = Color(0.6, 0.6, 0.6, 0.211765) +draw_center = false +corner_detail = 5 +expand_margin_left = 4.0 +expand_margin_right = 4.0 + +[sub_resource type="Image" id="Image_e0ep0"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_uhpk4"] +image = SubResource("Image_e0ep0") + +[node name="PopochiuGroup" type="PanelContainer"] +offset_right = 320.0 +offset_bottom = 24.0 +theme_override_styles/panel = SubResource("StyleBoxFlat_qhsn2") +script = ExtResource("1_lumyt") +is_open = false + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 2 + +[node name="Header" type="PanelContainer" parent="VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_t8mu1") + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/Header"] +layout_mode = 2 + +[node name="Arrow" type="TextureRect" parent="VBoxContainer/Header/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +texture = SubResource("ImageTexture_uhpk4") +stretch_mode = 4 + +[node name="Icon" type="TextureRect" parent="VBoxContainer/Header/HBoxContainer"] +unique_name_in_owner = true +texture_filter = 1 +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="Title" type="Label" parent="VBoxContainer/Header/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Group" + +[node name="Body" type="VBoxContainer" parent="VBoxContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="BtnCreate" type="Button" parent="VBoxContainer/Body"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 8 +icon = SubResource("ImageTexture_uhpk4") + +[node name="List" type="VBoxContainer" parent="VBoxContainer/Body"] +unique_name_in_owner = true +layout_mode = 2 diff --git a/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd new file mode 100644 index 0000000..cb989e6 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd @@ -0,0 +1,237 @@ +@tool +extends "res://addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd" + +signal group_selected(type: int) +signal deleted(file_path: String) + +enum AudioOptions { + DELETE = MenuOptions.DELETE, + ADD_TO_MUSIC, + ADD_TO_SFX, + ADD_TO_VOICE, + ADD_TO_UI +} + +const DELETE_AUDIO_CUE_MSG = "This will remove the [b]%s[/b] resource. Calls to this audio in \ +scripts will not work anymore. This action cannot be reversed. Continue?" +const DELETE_AUDIO_CUE_ASK = "Delete [b]%s[/b] file too? (cannot be reversed)" +const DELETE_AUDIO_FILE_MSG = "[b]%s[/b] will be deleted in the file system. This action cannot be \ +reversed. Continue?" + +# Only used by rows that represent an audio file +var file_name: String +var audio_cue: AudioCue +var cue_group: String +var stream_player: AudioStreamPlayer +var audio_tab: VBoxContainer = null +var is_playing := false : + set = set_is_playing +var current_playback_position := 0.0 + +@onready var play_btn: Button = %Play +@onready var stop_btn: Button = %Stop + + +#region Godot ###################################################################################### +func _ready() -> void: + super() + + # Assign icons + play_btn.icon = get_theme_icon("MainPlay", "EditorIcons") + stop_btn.icon = get_theme_icon("Stop", "EditorIcons") + + # Connect to children's signals + play_btn.pressed.connect(play) + stop_btn.pressed.connect(stop) + + # Remove group options if this is a PopochiuAudioCue + if is_instance_valid(audio_cue): + menu_popup.remove_item(menu_popup.get_item_index(AudioOptions.ADD_TO_MUSIC)) + menu_popup.remove_item(menu_popup.get_item_index(AudioOptions.ADD_TO_SFX)) + menu_popup.remove_item(menu_popup.get_item_index(AudioOptions.ADD_TO_VOICE)) + menu_popup.remove_item(menu_popup.get_item_index(AudioOptions.ADD_TO_UI)) + else: + label.text = file_name + + +#endregion + +#region Virtual #################################################################################### +func _remove_object() -> void: + _delete_dialog = PopochiuEditorHelper.DELETE_CONFIRMATION_SCENE.instantiate() + + if is_instance_valid(audio_cue): + _delete_dialog.title = "Remove %s cue" % audio_cue.resource_name + _delete_dialog.message = DELETE_AUDIO_CUE_MSG % audio_cue.resource_name + _delete_dialog.ask = DELETE_AUDIO_CUE_ASK % audio_cue.audio.resource_path + _delete_dialog.on_confirmed = _remove_from_popochiu + else: + _delete_dialog.title = "Delete %s" % file_name + _delete_dialog.message = DELETE_AUDIO_FILE_MSG % path + _delete_dialog.on_confirmed = _delete_from_file_system + + PopochiuEditorHelper.show_delete_confirmation(_delete_dialog) + + +#endregion + +#region Public ##################################################################################### +func select() -> void: + EditorInterface.edit_resource(audio_cue) + super() + + +func play() -> void: + if is_playing: + # Pause the audio stream + is_playing = false + return + + if is_instance_valid(audio_tab.last_played): + # Stop the currently playing row (which is different from this one) + audio_tab.last_played.stop() + + if not is_instance_valid(audio_cue): + # If the row does not have a [PopochiuAudioCue] assigned, then it is the row of an audio + # file. Therefore, the [AudioStream] to play will be its own [path] + var stream: AudioStream = load(path) + stream.loop = false + stream_player.stream = stream + else: + # Otherwise, the [AudioStream] to play will be that of the audio file associated with this + # [PopochiuAudioCue.audio] + stream_player.stream = audio_cue.audio + # The values of [AudioStream.pitch_scale] and [AudioStream.volume_db] should be taken from + # the information stored in the [PopochiuAudioCue]. + stream_player.pitch_scale = audio_cue.get_pitch_scale() + stream_player.volume_db = audio_cue.volume + + is_playing = true + + +func stop() -> void: + is_playing = false + current_playback_position = 0.0 + label.add_theme_color_override("font_color", dflt_font_color) + stream_player.stream = null + audio_tab.last_played = null + + +#endregion + +#region SetGet ##################################################################################### +func set_is_playing(value: bool) -> void: + is_playing = value + + if is_playing: + if not stream_player.finished.is_connected(stop): + stream_player.finished.connect(stop) + stream_player.play(current_playback_position) + audio_tab.last_played = self + else: + current_playback_position = stream_player.get_playback_position() + + if stream_player.playing: + stream_player.stop() + stream_player.finished.disconnect(stop) + + play_btn.icon = play_btn.get_theme_icon("Pause" if is_playing else "MainPlay", "EditorIcons") + + +#endregion + +#region Private #################################################################################### +func _get_menu_cfg() -> Array: + return [ + { + id = AudioOptions.ADD_TO_MUSIC, + icon = preload("res://addons/popochiu/icons/music.png"), + label = "Add to Music" + }, + { + id = AudioOptions.ADD_TO_SFX, + icon = preload("res://addons/popochiu/icons/sfx.png"), + label = "Add to Sound Effects" + }, + { + id = AudioOptions.ADD_TO_VOICE, + icon = preload("res://addons/popochiu/icons/voice.png"), + label = "Add to Voices" + }, + { + id = AudioOptions.ADD_TO_UI, + icon = preload("res://addons/popochiu/icons/ui.png"), + label = "Add to Graphic Interface" + } + ] + super() + + +func _menu_item_pressed(id: int) -> void: + match id: + AudioOptions.ADD_TO_MUSIC: + group_selected.emit(PopochiuResources.AudioTypes.MUSIC) + AudioOptions.ADD_TO_SFX: + group_selected.emit(PopochiuResources.AudioTypes.SOUND_EFFECT) + AudioOptions.ADD_TO_VOICE: + group_selected.emit(PopochiuResources.AudioTypes.VOICE) + AudioOptions.ADD_TO_UI: + group_selected.emit(PopochiuResources.AudioTypes.UI) + _: + super(id) + + +func _remove_from_popochiu() -> void: + # Remove the AudioCue from popochiu_data.cfg --------------------------------------------------- + var group_data: Array = PopochiuResources.get_data_value( + "audio", cue_group, [] + ) + if group_data: + group_data.erase(audio_cue.resource_path) + + if group_data.is_empty(): + PopochiuResources.erase_data_value("audio", cue_group) + else: + group_data.sort_custom( + func (a: String, b: String) -> bool: + return PopochiuUtils.sort_by_file_name(a, b) + ) + PopochiuResources.set_data_value("audio", cue_group, group_data) + + # Remove the AudioCue from the A singleton ----------------------------------------------------- + PopochiuResources.remove_audio_autoload(cue_group, name, audio_cue.resource_path) + + # Delete the file in its corresponding group in Audio tab + deleted.emit(audio_cue.audio.resource_path) + + if _delete_dialog.check_box.button_pressed: + _delete_from_file_system() + else: + queue_free() + + +func _delete_from_file_system() -> void: + # Delete the .tres file from the file system + var err: int = DirAccess.remove_absolute(path) + + if err != OK: + PopochiuUtils.print_error("Couldn't delete audio cue %s (err_code: %d)" % [path, err]) + return + + # Delete the audio file linked to the cue + var audio_file_path := audio_cue.audio.resource_path + err = DirAccess.remove_absolute(audio_file_path) + + if err != OK: + PopochiuUtils.print_error( + "Couldn't delete audio file %s (err_code: %d)" % [audio_file_path, err] + ) + return + + # Do this so Godot removes the .import file of the audio file + EditorInterface.get_resource_filesystem().update_file(audio_file_path) + EditorInterface.get_resource_filesystem().scan() + EditorInterface.get_resource_filesystem().scan_sources() + queue_free() + + +#endregion diff --git a/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd.uid new file mode 100644 index 0000000..8d6ab3f --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd.uid @@ -0,0 +1 @@ +uid://lhhhuwe3ye1f diff --git a/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.tscn b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.tscn new file mode 100644 index 0000000..6c10310 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.tscn @@ -0,0 +1,62 @@ +[gd_scene load_steps=9 format=3 uid="uid://ds6ojs55q50ud"] + +[ext_resource type="PackedScene" uid="uid://dwtwuqw2hpdpe" path="res://addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn" id="1_i2mx0"] +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd" id="2_24kri"] +[ext_resource type="Texture2D" uid="uid://d1dnmfkhscb7r" path="res://addons/popochiu/icons/music.png" id="3_hi2e1"] +[ext_resource type="Texture2D" uid="uid://cfh1uxtaff0ks" path="res://addons/popochiu/icons/sfx.png" id="4_1iw68"] +[ext_resource type="Texture2D" uid="uid://6ewpl4v0td2h" path="res://addons/popochiu/icons/voice.png" id="5_ray7p"] +[ext_resource type="Texture2D" uid="uid://528j2rksws2c" path="res://addons/popochiu/icons/ui.png" id="6_1bl3m"] + +[sub_resource type="Image" id="Image_dygia"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_v80gh"] +image = SubResource("Image_dygia") + +[node name="PopochiuAudioRow" instance=ExtResource("1_i2mx0")] +script = ExtResource("2_24kri") + +[node name="Label" parent="HBoxContainer" index="0"] +text = "" + +[node name="Play" type="Button" parent="Panel/ButtonsContainer" index="0"] +unique_name_in_owner = true +layout_mode = 2 +mouse_filter = 1 +icon = SubResource("ImageTexture_v80gh") +flat = true + +[node name="Stop" type="Button" parent="Panel/ButtonsContainer" index="1"] +unique_name_in_owner = true +layout_mode = 2 +mouse_filter = 1 +icon = SubResource("ImageTexture_v80gh") +flat = true + +[node name="BtnMenu" parent="Panel/ButtonsContainer" index="2"] +icon = SubResource("ImageTexture_v80gh") +item_count = 6 +popup/item_0/text = "Add to Music" +popup/item_0/icon = ExtResource("3_hi2e1") +popup/item_0/id = 1 +popup/item_1/text = "Add to Sound effects" +popup/item_1/icon = ExtResource("4_1iw68") +popup/item_1/id = 2 +popup/item_2/text = "Add to Voices" +popup/item_2/icon = ExtResource("5_ray7p") +popup/item_2/id = 3 +popup/item_3/text = "Add to Graphic interface" +popup/item_3/icon = ExtResource("6_1bl3m") +popup/item_3/id = 4 +popup/item_4/text = "" +popup/item_4/id = -1 +popup/item_4/separator = true +popup/item_5/text = "Remove" +popup/item_5/icon = SubResource("ImageTexture_v80gh") +popup/item_5/id = 0 diff --git a/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png b/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png new file mode 100644 index 0000000000000000000000000000000000000000..d882e8188b2659157d46c7264b66f65b39232757 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|LOfj@Lo9le z6BY;<7#SECh&J?4zZOeNDFFkdNUTxhYplUsw0;mcLIw+2#N|AFQ+c)I$ztaD0e0szM0 BGr#}< literal 0 HcmV?d00001 diff --git a/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png.import b/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png.import new file mode 100644 index 0000000..bdca4b3 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bw3ie8wfwa2i2" +path="res://.godot/imported/add_to_core.png-52def14ca6e499df1e292c93f01c4349.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png" +dest_files=["res://.godot/imported/add_to_core.png-52def14ca6e499df1e292c93f01c4349.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png b/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..c6fc86e920af9789b72fa2ccf89b254c18daa7c1 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|`aE46Lo9le z6BY;<7#SEC$eh&t5mIaIkyeFhKc0T;dWY)TaNl;aF(qwgwbKD}#42pry2cEm{oC|argQu&X J%Q~loCIF&mOXdIo literal 0 HcmV?d00001 diff --git a/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png.import b/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png.import new file mode 100644 index 0000000..4364236 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bahipxbrrss0o" +path="res://.godot/imported/delete.png-27dd9adc116bbf3fc8b20a99d1331933.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/popochiu/editor/main_dock/popochiu_row/images/delete.png" +dest_files=["res://.godot/imported/delete.png-27dd9adc116bbf3fc8b20a99d1331933.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/popochiu/editor/main_dock/popochiu_row/images/open.png b/addons/popochiu/editor/main_dock/popochiu_row/images/open.png new file mode 100644 index 0000000000000000000000000000000000000000..aaaf50c40c93b1b6187e8be19d2977ca8a256e73 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|QaxQ9Lo9le z6BY;<7#SECw5 void: + super() + + # Assign icons + tag.texture = TAG_ICON + + +#endregion + +#region Virtual #################################################################################### +func _get_state_template() -> Script: + return load(STATE_TEMPLATE) + + +func _clear_tag() -> void: + if is_pc: + is_pc = false + + +#endregion + +#region SetGet ##################################################################################### +func set_is_pc(value: bool) -> void: + is_pc = value + + if is_pc: + PopochiuEditorHelper.signal_bus.pc_changed.emit(name) + + tag.visible = value + menu_popup.set_item_disabled(menu_popup.get_item_index(CharacterOptions.SET_AS_PC), value) + + +#endregion + +#region Private #################################################################################### +func _get_menu_cfg() -> Array: + return [ + { + id = CharacterOptions.SET_AS_PC, + icon = TAG_ICON, + label = "Set as Player-controlled Character (PC)", + }, + ] + super() + + +func _menu_item_pressed(id: int) -> void: + match id: + CharacterOptions.SET_AS_PC: + self.is_pc = true + _: + super(id) + + +func _remove_from_core() -> void: + # Delete the object from Popochiu + PopochiuResources.remove_autoload_obj(PopochiuResources.C_SNGL, name) + PopochiuResources.erase_data_value("characters", str(name)) + + # Continue with the deletion flow + super() + + +#endregion diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd.uid new file mode 100644 index 0000000..e42c114 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd.uid @@ -0,0 +1 @@ +uid://clcrmrvxn4gai diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd new file mode 100644 index 0000000..8c79506 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd @@ -0,0 +1,15 @@ +@tool +extends "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd" + + +#region Private #################################################################################### +func _remove_from_core() -> void: + # Delete the object from Popochiu + PopochiuResources.remove_autoload_obj(PopochiuResources.D_SNGL, name) + PopochiuResources.erase_data_value("dialogs", str(name)) + + # Continue with the deletion flow + super() + + +#endregion diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd.uid new file mode 100644 index 0000000..0674f52 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd.uid @@ -0,0 +1 @@ +uid://dxvpjllfksrgf diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd new file mode 100644 index 0000000..ff4da4d --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd @@ -0,0 +1,78 @@ +@tool +extends "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd" + +enum InventoryItemOptions { + DELETE = MenuOptions.DELETE, + ADD_TO_CORE = Options.ADD_TO_CORE, + START_WITH_IT, +} + +const TAG_ICON = preload("res://addons/popochiu/icons/inventory_item_start.png") +const STATE_TEMPLATE = "res://addons/popochiu/engine/templates/inventory_item_state_template.gd" + +var is_on_start := false : set = set_is_on_start + +#region Godot ###################################################################################### +func _ready() -> void: + super() + + # Assign icons + tag.texture = TAG_ICON + + +#endregion + +#region Virtual #################################################################################### +func _get_state_template() -> Script: + return load(STATE_TEMPLATE) + + +#endregion + +#region SetGet ##################################################################################### +func set_is_on_start(value: bool) -> void: + is_on_start = value + tag.visible = value + + +#endregion + +#region Private #################################################################################### +func _get_menu_cfg() -> Array: + return [ + { + id = InventoryItemOptions.START_WITH_IT, + icon = TAG_ICON, + label = "Start with it", + }, + ] + super() + + +func _menu_item_pressed(id: int) -> void: + match id: + InventoryItemOptions.START_WITH_IT: + var items: Array = PopochiuConfig.get_inventory_items_on_start() + var script_name := str(name) + + if script_name in items: + items.erase(script_name) + else: + items.append(script_name) + + PopochiuConfig.set_inventory_items_on_start(items) + + self.is_on_start = script_name in items + _: + super(id) + + +func _remove_from_core() -> void: + # Delete the object from Popochiu + PopochiuResources.remove_autoload_obj(PopochiuResources.I_SNGL, name) + PopochiuResources.erase_data_value("inventory_items", str(name)) + + # Continue with the deletion flow + super() + + +#endregion diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd.uid new file mode 100644 index 0000000..61fbeb8 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd.uid @@ -0,0 +1 @@ +uid://dkff7x3cr07ox diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd new file mode 100644 index 0000000..37094a1 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd @@ -0,0 +1,334 @@ +@tool +extends "res://addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd" +## Row for the main object types: Room, Character, Inventory item, Dialog + +enum Options { + DELETE = MenuOptions.DELETE, + ADD_TO_CORE, +} + +const DELETE_MESSAGE = "This will remove the [b]%s[/b] object in [b]%s[/b] scene. Uses of this \ +object in scripts will not work anymore. This action cannot be undone. Continue?" +const DELETE_ASK_MESSAGE = "Do you want to delete the [b]%s[/b] folder too?%s (cannot be reversed)" +const ADD_TO_CORE_ICON = preload( + "res://addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png" +) +const AUDIO_FILE_TYPES = ["AudioStreamOggVorbis", "AudioStreamMP3", "AudioStreamWAV"] + +@onready var btn_open: Button = %BtnOpen +@onready var btn_script: Button = %BtnScript +@onready var btn_state: Button = %BtnState +@onready var btn_state_script: Button = %BtnStateScript + + +#region Godot ###################################################################################### +func _ready() -> void: + # Assign icons + btn_open.icon = get_theme_icon("InstanceOptions", "EditorIcons") + btn_script.icon = get_theme_icon("Script", "EditorIcons") + btn_state.icon = get_theme_icon("Object", "EditorIcons") + btn_state_script.icon = get_theme_icon("GDScript", "EditorIcons") + + # Connect to signals and create the options for the menu + super() + + # Connect to children's signals + btn_open.pressed.connect(_open) + btn_script.pressed.connect(_open_script) + btn_state.pressed.connect(_edit_state) + btn_state_script.pressed.connect(_open_state_script) + + # Disable some options by default + var add_to_core_idx := menu_popup.get_item_index(Options.ADD_TO_CORE) + if add_to_core_idx >= 0: + menu_popup.set_item_disabled(add_to_core_idx, true) + + +#endregion + +#region Virtual #################################################################################### +## Shows a confirmation popup to ask the developer if the Popochiu object should be removed only +## from the core, or from the file system too. +func _remove_object() -> void: + var location := _get_location() + + # Look into the Object"s folder for audio files and AudioCues to show the developer that those + # files will be removed too. + var audio_files := _search_audio_files( + EditorInterface.get_resource_filesystem().get_filesystem_path(path.get_base_dir()) + ) + + _delete_dialog = PopochiuEditorHelper.DELETE_CONFIRMATION_SCENE.instantiate() + _delete_dialog.title = "Remove %s from %s" % [name, location] + _delete_dialog.message = DELETE_MESSAGE % [name, location] + _delete_dialog.ask = DELETE_ASK_MESSAGE % [ + path.get_base_dir(), + "" if audio_files.is_empty() + else " ([b]%d[/b] audio cues will be deleted)" % audio_files.size() + ] + _delete_dialog.on_confirmed = _remove_from_core + + PopochiuEditorHelper.show_delete_confirmation(_delete_dialog) + + +func _get_state_template() -> Script: + return null + + +func _get_location() -> String: + return "Popochiu" + + +#endregion + +#region Public ##################################################################################### +## Called to make the row appear semitransparent to indicate that the object is in the project +## (has a folder with files inside) but is not part of the [code]popochiu_data.cfg[/code] file nor +## its corresponding autoload (e.g., R, C, I, D). This can happen when one removes an object from +## the project without removing its files, or when adding objects from another project. +func show_as_not_in_core() -> void: + label.modulate.a = 0.5 + menu_popup.set_item_disabled(menu_popup.get_item_index(Options.ADD_TO_CORE), false) + + +#endregion + +#region Private #################################################################################### +func _get_menu_cfg() -> Array: + return [ + { + id = Options.ADD_TO_CORE, + icon = ADD_TO_CORE_ICON, + label = "Add to Popochiu", + types = PopochiuResources.MAIN_TYPES + }, + ] + super() + + +func _menu_item_pressed(id: int) -> void: + match id: + Options.ADD_TO_CORE: + _add_object_to_core() + _: + super(id) + + +## Add this Object (Room, Character, InventoryItem, Dialog) to popochiu_data.cfg so it can be used +## by Popochiu. +func _add_object_to_core() -> void: + var target_array := "" + var resource: Resource + + if ".tscn" in path: + resource = load(path.replace(".tscn", ".tres")) + else: + resource = load(path) + + match type: + PopochiuResources.Types.ROOM: + target_array = "rooms" + PopochiuResources.Types.CHARACTER: + target_array = "characters" + PopochiuResources.Types.INVENTORY_ITEM: + target_array = "inventory_items" + PopochiuResources.Types.DIALOG: + target_array = "dialogs" + + if PopochiuEditorHelper.add_resource_to_popochiu(target_array, resource) != OK: + PopochiuUtils.print_error("Couldn't add Object [b]%s[/b] to Popochiu." % str(name)) + return + + # Add the object to its corresponding singleton + PopochiuResources.update_autoloads(true) + + label.modulate.a = 1.0 + + menu_popup.set_item_disabled(menu_popup.get_item_index(Options.ADD_TO_CORE), true) + + +## Selects the main file of the object in the FileSystem and opens it so that it can be edited. +func _open() -> void: + EditorInterface.select_file(path) + + if ".tres" in path: + EditorInterface.edit_resource(load(path)) + else: + EditorInterface.set_main_screen_editor("2D") + EditorInterface.open_scene_from_path(path) + + select() + + +func _open_script() -> void: + var script_path := path + + if ".tscn" in path: + # A room, character, inventory item, or prop + script_path = path.replace(".tscn", ".gd") + elif ".tres" in path: + # A dialog + script_path = path.replace(".tres", ".gd") + elif not ".gd" in path: + return + + EditorInterface.select_file(script_path) + EditorInterface.set_main_screen_editor("Script") + EditorInterface.edit_script(load(script_path)) + + select() + + +func _edit_state() -> void: + EditorInterface.select_file(path.replace(".tscn", ".tres")) + EditorInterface.edit_resource(load(path.replace(".tscn", ".tres"))) + + select() + + +func _open_state_script() -> void: + var state := load(path.replace(".tscn", ".tres")) + + EditorInterface.select_file(state.get_script().resource_path) + EditorInterface.set_main_screen_editor("Script") + EditorInterface.edit_resource(state.get_script()) + + select() + + +func _search_audio_files(dir: EditorFileSystemDirectory) -> Array: + var files := [] + + for idx in dir.get_subdir_count(): + files.append_array(_search_audio_files(dir.get_subdir(idx))) + + for idx in dir.get_file_count(): + match dir.get_file_type(idx): + AUDIO_FILE_TYPES: + files.append(dir.get_file_path(idx)) + + return files + + +func _remove_from_core() -> void: + # Check if the files should be deleted in the file system + if _delete_dialog.check_box.button_pressed: + _delete_from_file_system() + elif type in PopochiuResources.MAIN_TYPES: + show_as_not_in_core() + + var edited_scene: Node = EditorInterface.get_edited_scene_root() + if edited_scene and edited_scene.get("script_name") and edited_scene.script_name == name: + # If the open scene matches the object being deleted, skip saving the scene + queue_free() + return + + EditorInterface.save_scene() + queue_free() + + +## Remove this object's directory (subfolders included) from the file system. +func _delete_from_file_system() -> void: + var object_dir: EditorFileSystemDirectory = \ + EditorInterface.get_resource_filesystem().get_filesystem_path(path.get_base_dir()) + + # Remove files, sub folders and its files. + _recursive_delete(object_dir) + + +## Remove the `dir` directory from the system. For Godot to be able to delete a directory, it has to +## be empty, so this method first deletes the files from from the directory and each of its +## subdirectories. +func _recursive_delete(dir: EditorFileSystemDirectory) -> void: + if dir.get_file_count() > 0: + assert( + _delete_files(dir) == OK, + "[Popochiu] Error removing files in recursive elimination of %s" % dir.get_path() + ) + + if dir.get_subdir_count() > 0: + for folder_idx in dir.get_subdir_count(): + # Check if there are more folders inside the folder or delete the files inside it before + # deleting the folder itself + _recursive_delete(dir.get_subdir(folder_idx)) + + assert( + DirAccess.remove_absolute(dir.get_path()) == OK, + "[Popochiu] Error removing folder in recursive elimination of %s" % dir.get_path() + ) + EditorInterface.get_resource_filesystem().scan() + + +## Delete files within [param dir] directory. First, get the paths to each file, then delete them +## one by one calling [method EditorFileSystem.update_file], so that in case it's an imported file, +## its [b].import[/b] is also deleted. +func _delete_files(dir: EditorFileSystemDirectory) -> int: + # Stores the paths of the files to be deleted. + var files_paths := [] + # Stores the paths of the audio resources to delete + var deleted_audios := [] + + for file_idx: int in dir.get_file_count(): + match dir.get_file_type(file_idx): + AUDIO_FILE_TYPES: + deleted_audios.append(dir.get_file_path(file_idx)) + "Resource": + var resource: Resource = load(dir.get_file_path(file_idx)) + if not resource is AudioCue: + # If the resource is not an AudioCue, then it should be ignored for deletion + # in the game data + continue + + # Delete the [PopochiuAudioCue] in the project data file and the A singleton + assert( + _delete_audio_cue_in_data(resource) == true, + "[Popochiu] Couldn't remove [b]%s[/b] during deletion of [b]%s[/b]." % + [resource.resource_path, dir.get_path()] + ) + + deleted_audios.append(resource.audio.resource_path) + + files_paths.append(dir.get_file_path(file_idx)) + + for fp: String in files_paths: + var err: int = DirAccess.remove_absolute(fp) + if err != OK: + PopochiuUtils.print_error("Couldn't delete file %s. err_code:%d" % [err, fp]) + return err + EditorInterface.get_resource_filesystem().scan() + + # Delete the rows of audio files and the deleted AudioCues in the Audio tab + if not deleted_audios.is_empty(): + PopochiuEditorHelper.signal_bus.audio_cues_deleted.emit(deleted_audios) + + # Remove extra files (like .import) + for file_name: String in DirAccess.get_files_at(dir.get_path()): + DirAccess.remove_absolute(dir.get_path() + "/" + file_name) + EditorInterface.get_resource_filesystem().scan() + + return OK + + +## Looks to which audio group corresponds [param audio_cue] and deletes it both from +## [code]popochiu_data.cfg[/code] and the [b]A[/b] singleton (which is the one used to allow code +## autocompletion related to [PopochiuAudioCue]s). +func _delete_audio_cue_in_data(audio_cue: AudioCue) -> bool: + # TODO: This could be improved a lot if each PopochiuAudioCue has a variable to store the group + # to which it corresponds to. + # Delete the [PopochiuAudioCue] in the popochiu_data.cfg + for cue_group in ["mx_cues", "sfx_cues", "vo_cues", "ui_cues"]: + var cues: Array = PopochiuResources.get_data_value("audio", cue_group, []) + if not cues.has(audio_cue.resource_path): continue + + cues.erase(audio_cue.resource_path) + if PopochiuResources.set_data_value("audio", cue_group, cues) != OK: + return false + + # Fix #59 : remove the [PopochiuAudioCue] from the [A] singleton + PopochiuResources.remove_audio_autoload( + cue_group, audio_cue.resource_name, audio_cue.resource_path + ) + break + return true + + +#endregion diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd.uid new file mode 100644 index 0000000..6c42d34 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd.uid @@ -0,0 +1 @@ +uid://dj0dw4jcynb3p diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn new file mode 100644 index 0000000..df8834a --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn @@ -0,0 +1,58 @@ +[gd_scene load_steps=5 format=3 uid="uid://dwbo3pl372ugo"] + +[ext_resource type="PackedScene" uid="uid://dwtwuqw2hpdpe" path="res://addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn" id="1_xi41g"] +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd" id="2_g05pm"] + +[sub_resource type="Image" id="Image_15l6n"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_12sj2"] +image = SubResource("Image_15l6n") + +[node name="PopochiuMainObjectRow" instance=ExtResource("1_xi41g")] +script = ExtResource("2_g05pm") + +[node name="Label" parent="HBoxContainer" index="0"] +text = "PopochiuMainObjectRow" + +[node name="BtnOpen" type="Button" parent="Panel/ButtonsContainer" index="0"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 3 +tooltip_text = "Open in Editor" +icon = SubResource("ImageTexture_12sj2") +flat = true + +[node name="BtnScript" type="Button" parent="Panel/ButtonsContainer" index="1"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 3 +tooltip_text = "Open in Script" +icon = SubResource("ImageTexture_12sj2") +flat = true + +[node name="BtnState" type="Button" parent="Panel/ButtonsContainer" index="2"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 3 +tooltip_text = "Open state" +icon = SubResource("ImageTexture_12sj2") +flat = true + +[node name="BtnStateScript" type="Button" parent="Panel/ButtonsContainer" index="3"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 3 +tooltip_text = "Open state Script" +icon = SubResource("ImageTexture_12sj2") +flat = true diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd new file mode 100644 index 0000000..a4fb663 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd @@ -0,0 +1,60 @@ +@tool +extends "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd" + +const PROP_TEMPLATE = "res://addons/popochiu/engine/templates/prop_template.gd" + +var node_path := "" + + +#region Godot ###################################################################################### +func _ready() -> void: + super() + + if not FileAccess.file_exists(path.replace(".tscn", ".gd")): + btn_script.hide() + + btn_state.hide() + btn_state_script.hide() + + +#endregion + +#region Virtual #################################################################################### +func _get_location() -> String: + # Structure of path: "res://game/rooms/room_name/props/prop_name/" + # path split: [res:, popochiu, rooms, room_name, props, prop_name] + return "Room%s" % (path.split("/", false)[3]).to_pascal_case() + + +#endregion + +#region Private #################################################################################### +func _remove_from_core() -> void: + var room_child_to_free: Node = null + + if EditorInterface.get_edited_scene_root() is PopochiuRoom: + var opened_room: PopochiuRoom = EditorInterface.get_edited_scene_root() + match type: + PopochiuResources.Types.PROP: + room_child_to_free = opened_room.get_prop(str(name)) + PopochiuResources.Types.HOTSPOT: + room_child_to_free = opened_room.get_hotspot(str(name)) + PopochiuResources.Types.MARKER: + room_child_to_free = opened_room.get_marker(str(name)) + PopochiuResources.Types.REGION: + room_child_to_free = opened_room.get_region(str(name)) + PopochiuResources.Types.WALKABLE_AREA: + room_child_to_free = opened_room.get_walkable_area(str(name)) + + # Continue with the deletion flow + super() + + # Fix #196: Remove the Node from the Room tree once the folder of the object has been deleted + # from the FileSystem (this applies to Props, Hotspots, Walkable areas and Regions). + if room_child_to_free: + room_child_to_free.queue_free() + + EditorInterface.save_scene() + + +#endregion diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd.uid new file mode 100644 index 0000000..5c84703 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd.uid @@ -0,0 +1 @@ +uid://ds4pb624ionfc diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.tscn b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.tscn new file mode 100644 index 0000000..27d9b80 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=5 format=3 uid="uid://baei84pjb3fwj"] + +[ext_resource type="PackedScene" uid="uid://dwbo3pl372ugo" path="res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn" id="1_yvb3l"] +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd" id="2_ulg85"] + +[sub_resource type="Image" id="Image_8gjpm"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_4qvg7"] +image = SubResource("Image_8gjpm") + +[node name="PopochiuRoomObjectRow" instance=ExtResource("1_yvb3l")] +script = ExtResource("2_ulg85") + +[node name="BtnMenu" parent="Panel/ButtonsContainer" index="4"] +popup/item_1/icon = SubResource("ImageTexture_4qvg7") diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd new file mode 100644 index 0000000..212c53e --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd @@ -0,0 +1,90 @@ +@tool +extends "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd" + +enum RoomOptions { + DELETE = MenuOptions.DELETE, + ADD_TO_CORE = Options.ADD_TO_CORE, + SET_AS_MAIN, +} + +const STATE_TEMPLATE = "res://addons/popochiu/engine/templates/room_state_template.gd" + +var is_main := false : set = set_is_main + +@onready var btn_play: Button = %BtnPlay + + +#region Godot ###################################################################################### +func _ready() -> void: + super() + + # Assign icons + tag.texture = get_theme_icon("Heart", "EditorIcons") + btn_play.icon = get_theme_icon("MainPlay", "EditorIcons") + + btn_play.pressed.connect(_play) + + +#endregion + +#region Virtual #################################################################################### +func _get_state_template() -> Script: + return load(STATE_TEMPLATE) + + +func _clear_tag() -> void: + if is_main: + is_main = false + + +#endregion + +#region SetGet ##################################################################################### +func set_is_main(value: bool) -> void: + is_main = value + + if is_main: + # Call this first since the favs will be cleared + PopochiuEditorHelper.signal_bus.main_scene_changed.emit(path) + + tag.visible = value + menu_popup.set_item_disabled(menu_popup.get_item_index(RoomOptions.SET_AS_MAIN), value) + + +#endregion + +#region Private #################################################################################### +func _get_menu_cfg() -> Array: + return [ + { + id = RoomOptions.SET_AS_MAIN, + icon = get_theme_icon("Heart", "EditorIcons"), + label = "Set as Main scene", + }, + ] + super() + + +func _menu_item_pressed(id: int) -> void: + match id: + RoomOptions.SET_AS_MAIN: + is_main = true + _: + super(id) + + +## Plays the scene of the clicked row +func _play() -> void: + EditorInterface.select_file(path) + EditorInterface.play_custom_scene(path) + + +func _remove_from_core() -> void: + # Delete the object from Popochiu + PopochiuResources.remove_autoload_obj(PopochiuResources.R_SNGL, name) + PopochiuResources.erase_data_value("rooms", str(name)) + + # Continue with the deletion flow + super() + + +#endregion diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd.uid new file mode 100644 index 0000000..ac1547a --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd.uid @@ -0,0 +1 @@ +uid://bbbtge112sbkf diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.tscn b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.tscn new file mode 100644 index 0000000..2d81629 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.tscn @@ -0,0 +1,60 @@ +[gd_scene load_steps=5 format=3 uid="uid://w3oki6lv6l7f"] + +[ext_resource type="PackedScene" uid="uid://dwbo3pl372ugo" path="res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn" id="1_1hv2c"] +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd" id="2_s306b"] + +[sub_resource type="Image" id="Image_lkrau"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_3an75"] +image = SubResource("Image_lkrau") + +[node name="PopochiuRoomRow" instance=ExtResource("1_1hv2c")] +script = ExtResource("2_s306b") + +[node name="Label" parent="HBoxContainer" index="0"] +text = "PopochiuRoomRow" + +[node name="Tag" parent="HBoxContainer" index="1"] +texture = SubResource("ImageTexture_3an75") + +[node name="BtnPlay" type="Button" parent="Panel/ButtonsContainer" index="0"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 3 +tooltip_text = "Open in Editor" +icon = SubResource("ImageTexture_3an75") +flat = true + +[node name="BtnOpen" parent="Panel/ButtonsContainer" index="1"] +icon = SubResource("ImageTexture_3an75") + +[node name="BtnScript" parent="Panel/ButtonsContainer" index="2"] +icon = SubResource("ImageTexture_3an75") + +[node name="BtnState" parent="Panel/ButtonsContainer" index="3"] +icon = SubResource("ImageTexture_3an75") + +[node name="BtnStateScript" parent="Panel/ButtonsContainer" index="4"] +icon = SubResource("ImageTexture_3an75") + +[node name="BtnMenu" parent="Panel/ButtonsContainer" index="5"] +icon = SubResource("ImageTexture_3an75") +item_count = 3 +popup/item_0/text = "Set as Main scene" +popup/item_0/icon = SubResource("ImageTexture_3an75") +popup/item_0/id = 3 +popup/item_1/text = "" +popup/item_1/id = -1 +popup/item_1/separator = true +popup/item_2/text = "Remove" +popup/item_2/icon = SubResource("ImageTexture_3an75") +popup/item_2/id = 0 +popup/item_2/disabled = true diff --git a/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd new file mode 100644 index 0000000..7dd064c --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd @@ -0,0 +1,125 @@ +@tool +extends HBoxContainer +## The row that is created for Rooms, Characters, Inventory items, Dialogs, Props, Hotspots, Regions, +## Walkable areas, and Markers in the dock. + +signal clicked(node: HBoxContainer) + +enum MenuOptions { + SEPARATOR = -1, + DELETE, +} + +const SELECTED_FONT_COLOR = Color("706deb") +const AudioCue = preload("res://addons/popochiu/engine/audio_manager/audio_cue.gd") + +var path := "" +var is_menu_hidden := false +var type := -1 + +var _delete_dialog: PopochiuEditorHelper.DeleteConfirmation = null + +@onready var label: Label = %Label +@onready var tag: TextureRect = %Tag +@onready var btn_menu: MenuButton = %BtnMenu +@onready var menu_popup: PopupMenu = btn_menu.get_popup() +@onready var buttons_container: HBoxContainer = %ButtonsContainer +@onready var dflt_font_color: Color = label.get_theme_color("font_color") + + +#region Godot ###################################################################################### +func _ready() -> void: + label.text = str(name) + tooltip_text = path + + # Assign icons + btn_menu.icon = get_theme_icon("GuiTabMenuHl", "EditorIcons") + + # Create the context menu based checked the type of Object this row represents + _create_menu() + + tag.hide() + if is_menu_hidden: + btn_menu.hide() + + gui_input.connect(_check_click) + menu_popup.id_pressed.connect(_menu_item_pressed) + + +#endregion + +#region Virtual #################################################################################### +func _remove_object() -> void: + pass + + +func _clear_tag() -> void: + pass + + +#endregion + +#region Public ##################################################################################### +func select() -> void: + label.add_theme_color_override("font_color", SELECTED_FONT_COLOR) + clicked.emit(self) + + +func deselect() -> void: + label.add_theme_color_override("font_color", dflt_font_color) + + +func remove_menu_option(opt: int) -> void: + menu_popup.remove_item(menu_popup.get_item_index(opt)) + + +func add_button(btn: Button) -> void: + buttons_container.add_child(btn) + + +func clear_tag() -> void: + if tag.visible: + tag.visible = false + _clear_tag() + + +#endregion + +#region Private #################################################################################### +func _create_menu() -> void: + menu_popup.clear() + + for option in _get_menu_cfg(): + if typeof(option) == TYPE_INT and option == MenuOptions.SEPARATOR: + menu_popup.add_separator("", MenuOptions.SEPARATOR) + elif not option.has("types") or (option.has("types") and type in option.types): + menu_popup.add_icon_item(option.icon, option.label, option.id) + + if menu_popup.item_count == 2: + menu_popup.remove_item(menu_popup.get_item_index(MenuOptions.SEPARATOR)) + + +func _get_menu_cfg() -> Array: + return [ + MenuOptions.SEPARATOR, + { + id = MenuOptions.DELETE, + icon = get_theme_icon("Remove", "EditorIcons"), + label = "Remove" + } + ] + + +func _check_click(event: InputEvent) -> void: + if PopochiuUtils.get_click_or_touch_index(event) == MOUSE_BUTTON_LEFT: + EditorInterface.select_file(path) + select() + + +func _menu_item_pressed(id: int) -> void: + match id: + MenuOptions.DELETE: + _remove_object() + + +#endregion diff --git a/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd.uid new file mode 100644 index 0000000..cc74878 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd.uid @@ -0,0 +1 @@ +uid://d23b7rumebs32 diff --git a/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn new file mode 100644 index 0000000..7dac7a1 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn @@ -0,0 +1,76 @@ +[gd_scene load_steps=6 format=3 uid="uid://dwtwuqw2hpdpe"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd" id="1_pqknt"] + +[sub_resource type="Image" id="Image_87j38"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_4qvg7"] +image = SubResource("Image_87j38") + +[sub_resource type="Image" id="Image_hcerf"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_jcwkb"] +image = SubResource("Image_hcerf") + +[node name="PopochiuRow" type="HBoxContainer"] +offset_right = 320.0 +offset_bottom = 40.0 +script = ExtResource("1_pqknt") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +text = "PopochiuRow" + +[node name="Tag" type="TextureRect" parent="HBoxContainer"] +unique_name_in_owner = true +visible = false +texture_filter = 1 +layout_mode = 2 +size_flags_horizontal = 10 +size_flags_vertical = 4 +tooltip_text = "Main scene" +texture = SubResource("ImageTexture_4qvg7") + +[node name="Panel" type="Panel" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 1.5 +mouse_filter = 1 + +[node name="ButtonsContainer" type="HBoxContainer" parent="Panel"] +unique_name_in_owner = true +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +alignment = 2 + +[node name="BtnMenu" type="MenuButton" parent="Panel/ButtonsContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 8 +icon = SubResource("ImageTexture_jcwkb") +switch_on_hover = true +item_count = 1 +popup/item_0/text = "Remove" +popup/item_0/icon = SubResource("ImageTexture_jcwkb") diff --git a/addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd new file mode 100644 index 0000000..2ddbfb0 --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd @@ -0,0 +1,416 @@ +@tool +extends VBoxContainer +## Handles the Audio tab in Popochiu's dock. + +const SEARCH_PATH = "res://game/" +const POPOCHIU_AUDIO_ROW_SCENE = preload( + "res://addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.tscn" +) +const AUDIO_FILE_EXTENSIONS = ["ogg", "mp3", "wav", "opus"] +const AudioCue = preload("res://addons/popochiu/engine/audio_manager/audio_cue.gd") +const AudioCueSound = preload("res://addons/popochiu/engine/audio_manager/audio_cue_sound.gd") +const AudioCueMusic = preload("res://addons/popochiu/engine/audio_manager/audio_cue_music.gd") +const PopochiuAudioRow = preload( + "res://addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd" +) + +var last_played: Control = null +var last_selected: Control = null + +# Uses the path to an audio file as the key, and the PopochiuAudioRow created for the +# PopochiuAudioCue linked to that audio file as the value. +var _audio_files_in_group := {} +# Uses the path to an audio file as the key, and the PopochiuAudioRow created for that file as the +# value. +var _audio_files_to_assign := {} +var _audio_cues_to_create := [] +var _created_audio_cues := 0 +var _wavs_to_reimport := [] + +@onready var _asp: AudioStreamPlayer = $AudioStreamPlayer +@onready var _btn_scan_files: Button = %BtnScanAudioFiles +@onready var unassigned_group: PopochiuGroup = %UnassignedGroup +@onready var _groups := { + PopochiuResources.AudioTypes.MUSIC : { + array = "mx_cues", + group = %MusicGroup + }, + PopochiuResources.AudioTypes.SOUND_EFFECT : { + array = "sfx_cues", + group = %SFXGroup + }, + PopochiuResources.AudioTypes.VOICE : { + array = "vo_cues", + group = %VoiceGroup + }, + PopochiuResources.AudioTypes.UI : { + array = "ui_cues", + group = %UIGroup + } +} + + +#region Godot ###################################################################################### +func _ready() -> void: + $PopochiuFilter.groups = _groups + _btn_scan_files.icon = get_theme_icon("Search", "EditorIcons") + + # Connect to children's signals + _btn_scan_files.pressed.connect(search_audio_files) + + # Connect to helpers' signals + PopochiuEditorHelper.signal_bus.audio_cues_deleted.connect(delete_rows) + + +#endregion + +#region Public ##################################################################################### +func fill_data() -> void: + # Connect to Editor signals + EditorInterface.get_resource_filesystem().sources_changed.connect(_on_sources_changed) + + # Look for audio files without AudioCue + _put_audio_cues_in_group() + search_audio_files() + + +func search_audio_files() -> void: + var fs_directory: EditorFileSystemDirectory =\ + EditorInterface.get_resource_filesystem().get_filesystem_path(SEARCH_PATH) + + if not fs_directory: + return + + _read_directory(fs_directory) + + if _audio_cues_to_create.is_empty(): + return + + var progress_dialog := await PopochiuEditorHelper.show_progress() + progress_dialog.label.text = "Creating PopochiuAudioCues..." + progress_dialog.progress_bar.max_value = _audio_cues_to_create.size() + + EditorInterface.get_resource_filesystem().sources_changed.disconnect(_on_sources_changed) + _created_audio_cues = 0 + for arr in _audio_cues_to_create: + await _create_audio_cue(arr[0], arr[1]) + + progress_dialog.progress_bar.value = _created_audio_cues + + _put_audio_cues_in_group() + _audio_cues_to_create.clear() + + EditorInterface.get_resource_filesystem().sources_changed.connect(_on_sources_changed) + progress_dialog.close() + + # Reimport WAV files so they can be changed to LOOP without the need to manually reimport them + if not _wavs_to_reimport.is_empty(): + await PopochiuEditorHelper.secs_passed(0.1) + + _reimport_wavs() + + +func delete_rows(filepaths: Array) -> void: + for filepath in filepaths: + if filepath in _audio_files_to_assign: + _audio_files_to_assign[filepath].free() + _audio_files_to_assign.erase(filepath) + elif filepath in _audio_files_in_group: + _audio_files_in_group[filepath].free() + _audio_files_in_group.erase(filepath) + + +#endregion + +#region Private #################################################################################### +func _on_sources_changed(exist: bool) -> void: + # Look popochiu_data.cfg for PopochiuAudioCue files that don't exist in the project anymore + await _delete_rows_without_audio_cue() + search_audio_files() + + +func _delete_rows_without_audio_cue() -> void: + for key: int in _groups: + var group: String = _groups[key].array + var group_data: Array = PopochiuResources.get_data_value("audio", group, []) + + if group_data.is_empty(): + continue + + + group_data = group_data.filter( + func (resource_path: String) -> bool: + if FileAccess.file_exists(resource_path): + return true + + var audio_cue_name: String = resource_path.get_file().get_basename() + var popochiu_group: PopochiuGroup = _groups[key].group + + popochiu_group.remove_by_name(audio_cue_name) + + # Fix #59 : remove the AudioCue from the A singleton + PopochiuResources.remove_audio_autoload(group, audio_cue_name, resource_path) + return false + ) + + if group_data.is_empty(): + PopochiuResources.erase_data_value("audio", group) + else: + group_data.sort_custom( + func (a: String, b: String) -> bool: + return PopochiuUtils.sort_by_file_name(a, b) + ) + PopochiuResources.set_data_value("audio", group, group_data) + + await get_tree().process_frame + + # Remove freed objects in _audio_files_in_group + var to_erase := [] + for key: String in _audio_files_in_group: + if not _audio_files_in_group[key] or not is_instance_valid(_audio_files_in_group[key]): + to_erase.append(key) + + for key in to_erase: + _audio_files_in_group.erase(key) + + +func _put_audio_cues_in_group() -> void: + # Put already loaded (in popochiu_data.cfg) PopochiuAudioCues into their corresponding + # PopochiuGroup + for key: int in _groups: + var group_dic: Dictionary = _groups[key] + var group_data: Array = PopochiuResources.get_data_value("audio", group_dic.array, []) + + if group_data.is_empty(): continue + + for resource_path: String in group_data: + var ac: AudioCue = load(resource_path) + + if ( + ac.audio.resource_path in _audio_files_in_group + and is_instance_valid(_audio_files_in_group[ac.audio.resource_path]) + ): + # TODO: Check if the resource_path has changed + continue + + var ar := _create_audio_cue_row(ac) + ar.cue_group = group_dic.array + (group_dic.group as PopochiuGroup).add(ar, true) + + _audio_files_in_group[ac.audio.resource_path] = ar + + +func _create_audio_cue_row(audio_cue: AudioCue) -> HBoxContainer: + var ar: HBoxContainer = POPOCHIU_AUDIO_ROW_SCENE.instantiate() + + ar.name = audio_cue.resource_name + ar.path = audio_cue.resource_path + ar.audio_cue = audio_cue + ar.audio_tab = self + ar.stream_player = _asp + + ar.deleted.connect(_audio_cue_deleted) + ar.clicked.connect(_on_row_clicked) + + return ar + + +func _create_audio_file_row(file_path: String) -> void: + var ar: HBoxContainer = POPOCHIU_AUDIO_ROW_SCENE.instantiate() + + ar.name = file_path.get_file().get_basename() + ar.path = file_path + ar.file_name = file_path.get_file() + ar.audio_tab = self + ar.stream_player = _asp + + ar.group_selected.connect(_create_audio_cue.bind(file_path, ar)) + ar.clicked.connect(_on_row_clicked) + + unassigned_group.add(ar, true) + _audio_files_to_assign[file_path] = ar + + +func _read_directory(dir: EditorFileSystemDirectory) -> void: + if not dir: return + + if dir.get_subdir_count(): + for d in dir.get_subdir_count(): + # Look out sub directories + _read_directory(dir.get_subdir(d)) + + # Look out the directory files + _read_files(dir) + else: + _read_files(dir) + + +func _read_files(dir: EditorFileSystemDirectory) -> void: + for idx in dir.get_file_count(): + var file_name = dir.get_file(idx) + + if not file_name.get_extension() in AUDIO_FILE_EXTENSIONS: + continue + + if dir.get_file_path(idx) in _audio_files_in_group\ + or dir.get_file_path(idx) in _audio_files_to_assign: + # Don't put in the list an audio file already assigned to a PopochiuAudioCue in + # popochiu_data.cfg + continue + + # Check if the file prefix matches any of the prefixes defined to automatically assign it to + # a group + var target := PopochiuResources.AudioTypes.NONE + var prefix := file_name.get_slice(PopochiuConfig.get_prefix_character(), 0) + + if prefix in PopochiuConfig.get_music_prefixes(): + target = PopochiuResources.AudioTypes.MUSIC + elif prefix in PopochiuConfig.get_sound_effect_prefixes(): + target = PopochiuResources.AudioTypes.SOUND_EFFECT + elif prefix in PopochiuConfig.get_voice_prefixes(): + target = PopochiuResources.AudioTypes.VOICE + elif prefix in PopochiuConfig.get_ui_prefixes(): + target = PopochiuResources.AudioTypes.UI + + if target != PopochiuResources.AudioTypes.NONE: + _audio_cues_to_create.append([target, dir.get_file_path(idx)]) + else: + # Put the file in the Unassigned group so devs can manually choose the group to which + # the audio file should be assigned + _create_audio_file_row(dir.get_file_path(idx)) + + +func _create_audio_cue(type: int, path: String, audio_row: Container = null) -> void: + # Check if the audio file is a WAV file so its LoopMode is set properly + var stream: AudioStream = load(path) + if stream is AudioStreamWAV: + _wavs_to_reimport.append({ + stream = stream, + type = type + }) + + var cue_name := path.get_file().get_basename() + var cue_file_name := cue_name + cue_file_name += ".tres" + + # Create the AudioCue and save it in the file system + var ac: AudioCue + match type: + PopochiuResources.AudioTypes.MUSIC: + ac = AudioCueMusic.new() + ac.loop = true + _: + ac = AudioCueSound.new() + + ac.audio = stream + ac.resource_name = cue_name.to_lower() + + var error: int = ResourceSaver.save(ac, "%s/%s" % [path.get_base_dir(), cue_file_name]) + + assert(error == OK, "[Popochiu] Couldn't create PopochiuAudioCue: %s" % cue_file_name) + + var res: AudioCue = load("%s/%s" % [path.get_base_dir(), cue_file_name]) + var target := "" + + match type: + PopochiuResources.AudioTypes.MUSIC: + target = "mx_cues" + PopochiuResources.AudioTypes.SOUND_EFFECT: + target = "sfx_cues" + PopochiuResources.AudioTypes.VOICE: + target = "vo_cues" + PopochiuResources.AudioTypes.UI: + target = "ui_cues" + + var target_data: Array = PopochiuResources.get_data_value("audio", target, []) + + if not target_data.has(res.resource_path): + target_data.append(res.resource_path) + target_data.sort_custom( + func (a: String, b: String) -> bool: + return PopochiuUtils.sort_by_file_name(a, b) + ) + PopochiuResources.set_data_value("audio", target, target_data) + else: + await PopochiuEditorHelper.frame_processed() + return + + await PopochiuEditorHelper.secs_passed(0.1) + + # Add the AudioCue to the A singleton ---------------------------------------------------------- + PopochiuResources.update_autoloads(true) + + # Check if the AudioCue was created when assigning the audio file from the "Not assigned" group + if is_instance_valid(audio_row): + # Delete the file row + _audio_files_to_assign.erase(path) + audio_row.queue_free() + + # Put the row in its corresponding group + _put_audio_cues_in_group() + else: + _created_audio_cues += 1 + + +func _audio_cue_deleted(file_path: String) -> void: + _audio_files_in_group.erase(file_path) + + +func _on_row_clicked(row: HBoxContainer) -> void: + if is_instance_valid(last_selected): + last_selected.deselect() + + last_selected = row + + +## Reimport WAV files so they can be changed to LOOP without the need to manually reimport them. +func _reimport_wavs() -> void: + var streams_to_reimport := _wavs_to_reimport.filter( + func (stream_dic: Dictionary): + return _change_wav_loop_mode(stream_dic.stream) + ) + + EditorInterface.get_resource_filesystem().reimport_files(PackedStringArray( + streams_to_reimport.map( + func (stream_dic: Dictionary) -> String: + return stream_dic.stream.resource_path + ))) + await PopochiuEditorHelper.filesystem_scanned() + + for stream_dic: Dictionary in streams_to_reimport: + var stream: AudioStreamWAV = stream_dic.stream + var type: PopochiuResources.AudioTypes = stream_dic.type + stream.loop_mode = ( + AudioStreamWAV.LOOP_FORWARD if type == PopochiuResources.AudioTypes.MUSIC + else AudioStreamWAV.LOOP_DISABLED + ) + + _wavs_to_reimport.clear() + + +func _change_wav_loop_mode(audio_stream: AudioStreamWAV) -> bool: + var import_path := audio_stream.resource_path + ".import" + + if not FileAccess.file_exists(import_path): + PopochiuUtils.print_warning( + "[b]%s[/b]" % audio_stream.resource_name \ + + " does not have the correct metadata to loop, please reimport the file" \ + + " by setting its Loop Mode to Forward." + ) + return false + + var config := ConfigFile.new() + var err := config.load(import_path) + if err != OK: + PopochiuUtils.print_error("Couldn't open %s to change its Loop mode." % audio_stream) + return false + + if config.get_value("params", "edit/loop_mode", 0) != 0: + return false + + config.set_value("params", "edit/loop_mode", 1 + AudioStreamWAV.LOOP_FORWARD) + config.save(import_path) + return true + + +#endregion diff --git a/addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd.uid b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd.uid new file mode 100644 index 0000000..a3995bf --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd.uid @@ -0,0 +1 @@ +uid://dgcylkggyixw0 diff --git a/addons/popochiu/editor/main_dock/tab_audio/tab_audio.tscn b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.tscn new file mode 100644 index 0000000..d16015c --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.tscn @@ -0,0 +1,141 @@ +[gd_scene load_steps=15 format=3 uid="uid://bpj8jlet25coy"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd" id="1_u4f8v"] +[ext_resource type="PackedScene" uid="uid://b55ialbvpilxv" path="res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn" id="2"] +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_filter.gd" id="2_1v1d0"] +[ext_resource type="Texture2D" uid="uid://d1dnmfkhscb7r" path="res://addons/popochiu/icons/music.png" id="3_uojli"] +[ext_resource type="Texture2D" uid="uid://cfh1uxtaff0ks" path="res://addons/popochiu/icons/sfx.png" id="4_xdj1c"] +[ext_resource type="Texture2D" uid="uid://6ewpl4v0td2h" path="res://addons/popochiu/icons/voice.png" id="5_jptq2"] +[ext_resource type="Texture2D" uid="uid://528j2rksws2c" path="res://addons/popochiu/icons/ui.png" id="6_a24xe"] + +[sub_resource type="Image" id="Image_i4bix"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_jd5m0"] +image = SubResource("Image_i4bix") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gdosa"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qmbvx"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4uhm3"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_p4efq"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_j1gb1"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[node name="TabAudio" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource("1_u4f8v") + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] + +[node name="BtnScanAudioFiles" type="Button" parent="."] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 8 +text = "Scan audio files" +icon = SubResource("ImageTexture_jd5m0") + +[node name="PopochiuFilter" type="LineEdit" parent="."] +layout_mode = 2 +placeholder_text = "Filter Popochiu objects" +clear_button_enabled = true +right_icon = SubResource("ImageTexture_jd5m0") +script = ExtResource("2_1v1d0") + +[node name="ScrollContainer" type="ScrollContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="UnassignedGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_gdosa") +title = "Unassigned" +can_create = false + +[node name="MusicGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_qmbvx") +icon = ExtResource("3_uojli") +title = "Music" +can_create = false + +[node name="SFXGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_4uhm3") +icon = ExtResource("4_xdj1c") +title = "Sound effects" +can_create = false + +[node name="VoiceGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p4efq") +icon = ExtResource("5_jptq2") +title = "Voices" +can_create = false + +[node name="UIGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_j1gb1") +icon = ExtResource("6_a24xe") +title = "Graphic interface" +can_create = false diff --git a/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd new file mode 100644 index 0000000..928f2bf --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd @@ -0,0 +1,91 @@ +@tool +extends AcceptDialog + +const POPOCHIU_POPUP_SCENE :=\ +"res://addons/popochiu/engine/objects/gui/components/popups/popochiu_popup.tscn" +const POPOCHIU_POPUP_SCRIPT :=\ +"res://addons/popochiu/engine/templates/gui/popup_template.gd" +const POPUPS_FOLDER := "res://game/gui/popups/%s/" + +var _popup_id := "" +var _scene_path := POPUPS_FOLDER + "%s.tscn" +var _script_path := POPUPS_FOLDER + "%s.gd" + +@onready var title_edit: LineEdit = %TitleEdit +@onready var info: RichTextLabel = %Info +@onready var dflt_info := info.text + +#region Godot ###################################################################################### +func _ready() -> void: + # Connect to own signals + about_to_popup.connect(_on_about_to_popup) + + # Connect to children's signals + title_edit.text_changed.connect(_on_title_changed) + get_ok_button().pressed.connect(_create_popup) + + info.hide() + hide() + + +#endregion + +#region Private #################################################################################### +func _on_about_to_popup() -> void: + title_edit.clear() + info.text = dflt_info + info.hide() + + +func _on_title_changed(new_text: String) -> void: + if new_text.is_empty(): + info.hide() + return + + _popup_id = new_text.to_snake_case() + + info.text = dflt_info.replace("%s", _popup_id) + info.show() + + +func _create_popup() -> void: + # Create the popups directory inside the graphic interface directory --------------------------- + DirAccess.make_dir_recursive_absolute(POPUPS_FOLDER % _popup_id) + + var scene_path := _scene_path.replace("%s", _popup_id) + var script_path := _script_path.replace("%s", _popup_id) + var pascal_name := _popup_id.to_pascal_case() + + # Create the popup script ---------------------------------------------------------------------- + DirAccess.copy_absolute(POPOCHIU_POPUP_SCRIPT, script_path) + + # Create the PopochiuPopup scene --------------------------------------------------------------- + var popup_instance: PopochiuPopup = load(POPOCHIU_POPUP_SCENE).instantiate() + popup_instance.set_script(load(script_path)) + popup_instance.name = pascal_name + "Popup" + popup_instance.script_name = pascal_name + popup_instance.title = pascal_name.capitalize() + + var popup_scene: PackedScene = PackedScene.new() + popup_scene.pack(popup_instance) + if ResourceSaver.save(popup_scene, scene_path) != OK: + PopochiuUtils.print_error("Couldn't create popup: %s" % _popup_id) + # TODO: Show feedback in the popup + return + + # Add the popup to the Popups node in the graphic interface scene ------------------------------ + var popup_node: PopochiuPopup = load(scene_path).instantiate() + var gui_node := EditorInterface.get_edited_scene_root() + + gui_node.get_node("Popups").add_child(popup_node) + popup_node.owner = gui_node + EditorInterface.save_scene() + + # Open the scene of the created popup for edition ---------------------------------------------- + await PopochiuEditorHelper.filesystem_scanned() + + EditorInterface.select_file(scene_path) + EditorInterface.open_scene_from_path(scene_path) + + +#endregion diff --git a/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd.uid b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd.uid new file mode 100644 index 0000000..14115a3 --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd.uid @@ -0,0 +1 @@ +uid://b6dn0qq3c0iep diff --git a/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.tscn b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.tscn new file mode 100644 index 0000000..bd6278a --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.tscn @@ -0,0 +1,48 @@ +[gd_scene load_steps=2 format=3 uid="uid://bu77q250wow5g"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd" id="1_4ujlk"] + +[node name="CreatePopupWindow" type="AcceptDialog"] +title = "Create Popup" +size = Vector2i(640, 256) +popup_window = true +max_size = Vector2i(1280, 720) +ok_button_text = "Create" +script = ExtResource("1_4ujlk") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +offset_left = 8.0 +offset_top = 8.0 +offset_right = 632.0 +offset_bottom = 207.0 + +[node name="Label" type="Label" parent="VBoxContainer"] +layout_mode = 2 +text = "Give a title to your popup." + +[node name="TitleEdit" type="LineEdit" parent="VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +expand_to_text_length = true +context_menu_enabled = false +clear_button_enabled = true + +[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/PanelContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="Info" type="RichTextLabel" parent="VBoxContainer/PanelContainer/MarginContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +bbcode_enabled = true +text = "This will create the following files: +[code]res://popochiu/graphic_interface/popups/%s/%s.tscn +res://popochiu/graphic_interface/popups/%s/%s.gd[/code]" +fit_content = true diff --git a/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd new file mode 100644 index 0000000..efcc729 --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd @@ -0,0 +1,234 @@ +@tool +extends VBoxContainer + +const COMPONENTS_PATH := "res://addons/popochiu/engine/objects/gui/components/" + +var _opened_scene: Control = null +var _components_basedir := [] +var _script_path := PopochiuResources.GUI_GAME_SCENE.replace(".tscn", ".gd") +var _commands_path := PopochiuResources.GUI_GAME_SCENE.replace( + "gui.tscn", "gui_commands.gd" +) +var _gui_templates_helper := preload( + "res://addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd" +) + +@onready var template_name: Label = %TemplateName +@onready var btn_script: Button = %BtnScript +@onready var btn_commands: Button = %BtnCommands + + +#region Godot ###################################################################################### +func _ready() -> void: + btn_script.icon = get_theme_icon("Script", "EditorIcons") + btn_commands.icon = get_theme_icon("Script", "EditorIcons") + + # Connect to child signals + btn_script.pressed.connect(_on_script_pressed) + btn_commands.pressed.connect(_on_commands_pressed) + %PopupsGroup.create_clicked.connect(_on_create_popup_clicked) + + +#endregion + +#region Public ##################################################################################### +## Called when the selected scene in the Editor 2D changes. +## This checks if that scene is a PopochiuGraphicInterface to list its components +## and create the corresponding buttons to add/remove such components. +func on_scene_changed(gui_node: Node) -> void: + if gui_node is PopochiuGraphicInterface: + _opened_scene = gui_node + + # FIXME: This override the tab change done by tab_room.gd + get_parent().current_tab = get_index() + + _clear_elements() + await get_tree().process_frame + + _read_dir(COMPONENTS_PATH) + _create_buttons() + _find_components(gui_node) + _update_groups_titles() + + template_name.text = "Template: %s" % ( + PopochiuResources.get_data_value("ui", "template", "---") as String + ).capitalize() + + _opened_scene.child_exiting_tree.connect(_on_child_removed) + + var popups := _opened_scene.get_node_or_null("Popups") + if popups: + popups.child_exiting_tree.connect(_on_child_removed) + else: + if is_instance_valid(_opened_scene): + _opened_scene.child_exiting_tree.disconnect(_on_child_removed) + + var popups := _opened_scene.get_node_or_null("Popups") + if popups: + popups.child_exiting_tree.disconnect(_on_child_removed) + + _opened_scene = null + + +## Opens the graphic interface scene of the game. +func open_gui_scene() -> void: + if is_instance_valid(_opened_scene) and _opened_scene is PopochiuGraphicInterface: + return + + var path := PopochiuResources.GUI_GAME_SCENE + + EditorInterface.select_file(path) + EditorInterface.set_main_screen_editor("2D") + EditorInterface.open_scene_from_path(path) + + +#endregion + +#region Private #################################################################################### +func _on_script_pressed() -> void: + EditorInterface.select_file(_script_path) + EditorInterface.set_main_screen_editor("Script") + EditorInterface.edit_script(load(_script_path)) + + +func _on_commands_pressed() -> void: + EditorInterface.select_file(_commands_path) + EditorInterface.set_main_screen_editor("Script") + EditorInterface.edit_script(load(_commands_path)) + + +func _on_create_popup_clicked() -> void: + $CreatePopupWindow.popup_centered() + + +func _clear_elements() -> void: + _components_basedir.clear() + for container in [%BaseComponentsGroup, %PopupsGroup]: + container.clear_list() + + +## Reads a directory in the project (addons folder) looking for Popochiu GUI +## components and popups. +func _read_dir(path: String) -> void: + var dir = DirAccess.open(path) + + if not dir: + return + + dir.list_dir_begin() + var element_name = dir.get_next() + + while element_name != "": + if dir.current_is_dir(): + if element_name == "popups": + _read_dir(COMPONENTS_PATH + element_name + "/") + else: + _components_basedir.append(path + element_name) + + element_name = dir.get_next() + + +## Create the buttons in the tab for GUI components and popups. +func _create_buttons() -> void: + for component_path in _components_basedir: + var btn := Button.new() + var component_name: String = component_path.split("/")[-1] + + btn.name = component_name + btn.text = component_name.capitalize() + btn.set_meta("path", component_path) + btn.pressed.connect(_add_component.bind(btn)) + + if "popups" in component_path: + %PopupsGroup.add(btn) + else: + %BaseComponentsGroup.add(btn) + + set_meta(component_name, btn) + + +## Looks for GUI components and popups in the children of `node`. +func _find_components(node: Control) -> void: + var components := ( + node.get_tree().get_nodes_in_group("popochiu_gui_component") + + node.get_tree().get_nodes_in_group("popochiu_gui_popup") + ) + + for child: Node in components: + var component_name := child.scene_file_path.get_base_dir().split("/")[-1] + if has_meta(component_name): + (get_meta(component_name) as Button).disabled = true + + +## Updates the title of the base components and popups PopochiuGroups so they +## show a number representing the amount of elements in the scene. +func _update_groups_titles() -> void: + var disabled_count := 0 + for btn in %BaseComponentsGroup.get_elements(): + if btn.disabled: + disabled_count += 1 + + %BaseComponentsGroup.set_title_count(disabled_count, %BaseComponentsGroup.get_elements().size()) + + disabled_count = 0 + for btn in %PopupsGroup.get_elements(): + if btn.disabled: + disabled_count += 1 + + %PopupsGroup.set_title_count(disabled_count, %PopupsGroup.get_elements().size()) + + +## Create a copy of the selected component (scenes, resources, scripts) in the +## game graphic interface folder and adds it to the Graphic Interface scene. +func _add_component(btn: Button) -> void: + btn.disabled = true + + var is_popup: bool = "popups" in btn.get_meta("path") + var scene_path := "%s/%s.tscn" % [ + btn.get_meta("path"), + btn.name + "_popup" if is_popup else btn.name + ] + var target_scene_path := await _gui_templates_helper.copy_component(scene_path) + + if target_scene_path.is_empty(): + return + + var instance: Control = ( + load(target_scene_path) as PackedScene + ).instantiate(PackedScene.GEN_EDIT_STATE_INSTANCE) + + if is_popup: + if not _opened_scene.get_node_or_null("Popups"): + var popups_group := Control.new() + + _opened_scene.add_child(popups_group) + + popups_group.name = "Popups" + popups_group.owner = _opened_scene + popups_group.layout_mode = 1 + popups_group.anchors_preset = PRESET_FULL_RECT + popups_group.mouse_filter = Control.MOUSE_FILTER_IGNORE + + _opened_scene.get_node("Popups").add_child(instance) + else: + _opened_scene.add_child(instance) + + instance.owner = _opened_scene + + var result: int = EditorInterface.save_scene() + + if result == OK: + PopochiuEditorHelper.select_node(instance) + else: + btn.disabled = false + + +func _on_child_removed(node: CanvasItem) -> void: + if not node is Control: return + + var basedir := node.scene_file_path.get_base_dir() + if basedir in _components_basedir: + (get_meta(basedir.split("/")[-1]) as Button).disabled = false + + +#endregion diff --git a/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd.uid b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd.uid new file mode 100644 index 0000000..0c1537e --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd.uid @@ -0,0 +1 @@ +uid://clpbfehnalnts diff --git a/addons/popochiu/editor/main_dock/tab_gui/tab_gui.tscn b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.tscn new file mode 100644 index 0000000..4183f13 --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.tscn @@ -0,0 +1,97 @@ +[gd_scene load_steps=8 format=3 uid="uid://4etgd0rwjgct"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd" id="1_xmvtx"] +[ext_resource type="PackedScene" uid="uid://b55ialbvpilxv" path="res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn" id="2_uc7il"] +[ext_resource type="PackedScene" uid="uid://bu77q250wow5g" path="res://addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.tscn" id="3_3a7ix"] + +[sub_resource type="Image" id="Image_j7yy0"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_ddg1g"] +image = SubResource("Image_j7yy0") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_73bc0"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_674al"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[node name="UI" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_xmvtx") + +[node name="Header" type="VBoxContainer" parent="."] +layout_mode = 2 +alignment = 1 + +[node name="TemplateName" type="Label" parent="Header"] +unique_name_in_owner = true +layout_mode = 2 +text = "Template: Custom" +horizontal_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="Header"] +layout_mode = 2 +size_flags_horizontal = 4 + +[node name="BtnScript" type="Button" parent="Header/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Script" +icon = SubResource("ImageTexture_ddg1g") + +[node name="BtnCommands" type="Button" parent="Header/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Commands" +icon = SubResource("ImageTexture_ddg1g") + +[node name="ScrollContainer" type="ScrollContainer" parent="."] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="BaseComponentsGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2_uc7il")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_73bc0") +title = "Base components" +can_create = false +custom_title_count = true + +[node name="PopupsGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2_uc7il")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_674al") +title = "Popups" +create_text = "Create popup" +custom_title_count = true + +[node name="CreatePopupWindow" parent="." instance=ExtResource("3_3a7ix")] diff --git a/addons/popochiu/editor/main_dock/tab_main/tab_main.gd b/addons/popochiu/editor/main_dock/tab_main/tab_main.gd new file mode 100644 index 0000000..dfd8e3f --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_main/tab_main.gd @@ -0,0 +1,208 @@ +@tool +extends VBoxContainer +## Acts like a HUD for working with Popochiu objects: Rooms, Characters, Inventory items, and Dialog +## trees. + +const OBJECT_ROW_FOLDER = "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/" +const POPOCHIU_OBJECT_ROW_SCENE = preload(OBJECT_ROW_FOLDER + "popochiu_object_row.tscn") +const POPOCHIU_ROOM_ROW_SCENE = preload(OBJECT_ROW_FOLDER + "room_row/popochiu_room_row.tscn") +const PopochiuObjectRow := preload(OBJECT_ROW_FOLDER + "popochiu_object_row.gd") +const PopochiuCharacterRow = preload(OBJECT_ROW_FOLDER + "character_row/popochiu_character_row.gd") +const PopochiuInventoryItemRow = preload( + OBJECT_ROW_FOLDER + "inventory_item_row/popochiu_inventory_item_row.gd" +) +const PopochiuDialogRow = preload(OBJECT_ROW_FOLDER + "dialog_row/popochiu_dialog_row.gd") + +var last_selected: PopochiuObjectRow = null + +var _rows_paths := [] +var _has_data := false + +@onready var _types := { + PopochiuResources.Types.ROOM: { + path = PopochiuResources.ROOMS_PATH, + group = find_child("RoomsGroup"), + popup = PopochiuEditorHelper.CREATE_ROOM, + scene = PopochiuResources.ROOMS_PATH.path_join("%s/room_%s.tscn") + }, + PopochiuResources.Types.CHARACTER: { + path = PopochiuResources.CHARACTERS_PATH, + group = find_child("CharactersGroup"), + popup = PopochiuEditorHelper.CREATE_CHARACTER, + scene = PopochiuResources.CHARACTERS_PATH.path_join("%s/character_%s.tscn") + }, + PopochiuResources.Types.INVENTORY_ITEM: { + path = PopochiuResources.INVENTORY_ITEMS_PATH, + group = find_child("ItemsGroup"), + popup = PopochiuEditorHelper.CREATE_INVENTORY_ITEM, + scene = PopochiuResources.INVENTORY_ITEMS_PATH.path_join("%s/inventory_item_%s.tscn") + }, + PopochiuResources.Types.DIALOG: { + path = PopochiuResources.DIALOGS_PATH, + group = find_child("DialogsGroup"), + popup = PopochiuEditorHelper.CREATE_DIALOG, + scene = PopochiuResources.DIALOGS_PATH.path_join("%s/dialog_%s.tres") + } +} + +#region Godot ###################################################################################### +func _ready() -> void: + $PopochiuFilter.groups = _types + + for t in _types.values(): + t.group.create_clicked.connect(PopochiuEditorHelper.show_creation_popup.bind(t.popup)) + + # Connect to helper signals + PopochiuEditorHelper.signal_bus.main_scene_changed.connect(_set_main_scene) + PopochiuEditorHelper.signal_bus.pc_changed.connect(_set_pc) + PopochiuEditorHelper.signal_bus.main_object_added.connect(_add_to_list) + + +#endregion + +#region Public ##################################################################################### +func fill_data() -> void: + # Search the FileSystem for Rooms, Characters, InventoryItems and Dialogs + for type_key: int in _types: + var resources := Array(DirAccess.get_directories_at(_types[type_key].path)).map( + _get_popochiu_objects_resources.bind(type_key) + ) + + for resource: Resource in resources: + _create_row(type_key, resource) + + +func check_data() -> void: + if not _has_data: + # Try to load the Main tab data in case they couldn't be loaded while + # opening the engine + fill_data() + + +#endregion + +#region Private #################################################################################### +func _set_main_scene(path: String) -> void: + ProjectSettings.set_setting(PopochiuResources.MAIN_SCENE, path) + assert( + ProjectSettings.save() == OK, + "[Popochiu] Couldn't set %s as the Main Scene in Project Settings" % path + ) + _types[PopochiuResources.Types.ROOM].group.clear_favs() + + +func _set_pc(script_name: String) -> void: + if PopochiuResources.get_data_value("setup", "pc", "") == script_name: + return + + assert( + PopochiuResources.set_data_value("setup", "pc", script_name) == OK, + "[Popochiu] Couldn't set %s as the Player-controlled Character (PC)" % script_name + ) + + var characters_group: PopochiuGroup = _types[PopochiuResources.Types.CHARACTER].group + characters_group.clear_favs() + (characters_group.get_by_name(script_name) as PopochiuCharacterRow).is_pc = true + + +func _add_to_list(type: int, name_to_add: String) -> PopochiuObjectRow: + var row := _create_object_row(type, name_to_add) + _types[type].group.add(row) + return row + + +func _get_popochiu_objects_resources( + dir_name: String, type_key: PopochiuResources.Types +) -> Resource: + var resource_filesystem := EditorInterface.get_resource_filesystem() + var dir_path := (_types[type_key].path as String).path_join(dir_name) + + for file_name: String in DirAccess.get_files_at(dir_path): + if file_name.get_extension() != "tres": continue + + var resource: Resource = load(dir_path.path_join(file_name)) + if ( + resource is PopochiuRoomData + or resource is PopochiuCharacterData + or resource is PopochiuInventoryItemData + or resource is PopochiuDialog + ): + return resource + + PopochiuUtils.print_error("No data file (.tres) found for [b]%s[/b]" % dir_path) + return null + + +func _create_row(type_key: int, resource: Resource) -> void: + if _types[type_key].scene.replace("%s", resource.resource_name) in _rows_paths: return + + var row: PopochiuObjectRow = _create_object_row(type_key, resource.script_name) + _types[type_key].group.add(row) + + # Check if the object in the list is in its corresponding array in Popochiu (Popochiu.tscn) + var is_in_core := true + var has_state_script: bool = FileAccess.file_exists(row.path.replace(".tscn", "_state.gd")) + + match type_key: + PopochiuResources.Types.ROOM: + is_in_core = PopochiuResources.has_data_value("rooms", resource.script_name) + + # Check if the room is the main scene + var main_scene: String = ProjectSettings.get_setting(PopochiuResources.MAIN_SCENE) + + if main_scene == resource.scene: + row.is_main = true + PopochiuResources.Types.CHARACTER: + is_in_core = PopochiuResources.has_data_value("characters", resource.script_name) + + if resource.script_name == PopochiuResources.get_data_value("setup", "pc", ""): + row.is_pc = true + PopochiuResources.Types.INVENTORY_ITEM: + is_in_core = PopochiuResources.has_data_value("inventory_items", resource.script_name) + + var items: Array = PopochiuConfig.get_inventory_items_on_start() + + if resource.script_name in items: + row.is_on_start = true + PopochiuResources.Types.DIALOG: + is_in_core = PopochiuResources.has_data_value("dialogs", resource.script_name) + + if not is_in_core: + row.show_as_not_in_core() + + +func _create_object_row(type: int, name_to_add: String) -> PopochiuObjectRow: + var new_obj: PopochiuObjectRow = null + + match type: + PopochiuResources.Types.ROOM: + new_obj = POPOCHIU_ROOM_ROW_SCENE.instantiate() + PopochiuResources.Types.CHARACTER: + new_obj = POPOCHIU_OBJECT_ROW_SCENE.instantiate() + new_obj.set_script(PopochiuCharacterRow) + PopochiuResources.Types.INVENTORY_ITEM: + new_obj = POPOCHIU_OBJECT_ROW_SCENE.instantiate() + new_obj.set_script(PopochiuInventoryItemRow) + PopochiuResources.Types.DIALOG: + new_obj = POPOCHIU_OBJECT_ROW_SCENE.instantiate() + new_obj.set_script(PopochiuDialogRow) + + new_obj.name = name_to_add + new_obj.type = type + new_obj.path = _types[type].scene.replace("%s", name_to_add.to_snake_case()) + new_obj.clicked.connect(_select_object) + + _rows_paths.append(new_obj.path) + _has_data = true + + return new_obj + + +func _select_object(por: PopochiuObjectRow) -> void: + if last_selected and last_selected != por: + last_selected.deselect() + + last_selected = por + + +#endregion diff --git a/addons/popochiu/editor/main_dock/tab_main/tab_main.gd.uid b/addons/popochiu/editor/main_dock/tab_main/tab_main.gd.uid new file mode 100644 index 0000000..34c25ae --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_main/tab_main.gd.uid @@ -0,0 +1 @@ +uid://c008gxppd3akf diff --git a/addons/popochiu/editor/main_dock/tab_main/tab_main.tscn b/addons/popochiu/editor/main_dock/tab_main/tab_main.tscn new file mode 100644 index 0000000..fa7e1c4 --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_main/tab_main.tscn @@ -0,0 +1,118 @@ +[gd_scene load_steps=14 format=3 uid="uid://bynwdds8o3tcx"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_filter.gd" id="1_akrwb"] +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_main/tab_main.gd" id="1_jdtyo"] +[ext_resource type="PackedScene" uid="uid://b55ialbvpilxv" path="res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn" id="2_71uuj"] +[ext_resource type="Texture2D" uid="uid://cec7vj2roo7ef" path="res://addons/popochiu/icons/room.png" id="3_v0n5j"] +[ext_resource type="Texture2D" uid="uid://mir6j58lju3l" path="res://addons/popochiu/icons/character.png" id="4_q3ysu"] +[ext_resource type="Texture2D" uid="uid://dxtuplm5v6w33" path="res://addons/popochiu/icons/inventory_item.png" id="5_h6p8m"] +[ext_resource type="Texture2D" uid="uid://bb53j2q1cm45l" path="res://addons/popochiu/icons/dialog.png" id="6_y67sq"] + +[sub_resource type="Image" id="Image_vdhps"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_c80ss"] +image = SubResource("Image_vdhps") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q8xlx"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.439216, 0.427451, 0.921569, 0.74902) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_r2ioy"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.556863, 0.313726, 0.160784, 0.74902) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_odbd1"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.337255, 0.67451, 0.301961, 0.74902) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wku8y"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.556863, 0.235294, 0.592157, 0.74902) + +[node name="Main" type="VBoxContainer"] +size_flags_horizontal = 3 +size_flags_vertical = 3 +focus_mode = 2 +script = ExtResource("1_jdtyo") +metadata/_tab_index = 0 + +[node name="PopochiuFilter" type="LineEdit" parent="."] +layout_mode = 2 +placeholder_text = "Filter Popochiu objects" +clear_button_enabled = true +right_icon = SubResource("ImageTexture_c80ss") +script = ExtResource("1_akrwb") + +[node name="MainScrollContainer" type="ScrollContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +follow_focus = true + +[node name="VBoxContainer" type="VBoxContainer" parent="MainScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="RoomsGroup" parent="MainScrollContainer/VBoxContainer" instance=ExtResource("2_71uuj")] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_q8xlx") +icon = ExtResource("3_v0n5j") +color = Color(0.439216, 0.427451, 0.921569, 0.74902) +title = "Rooms" +create_text = "Create room" + +[node name="CharactersGroup" parent="MainScrollContainer/VBoxContainer" instance=ExtResource("2_71uuj")] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_r2ioy") +icon = ExtResource("4_q3ysu") +color = Color(0.556863, 0.313726, 0.160784, 0.74902) +title = "Characters" +create_text = "Create character" + +[node name="ItemsGroup" parent="MainScrollContainer/VBoxContainer" instance=ExtResource("2_71uuj")] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_odbd1") +icon = ExtResource("5_h6p8m") +color = Color(0.337255, 0.67451, 0.301961, 0.74902) +title = "Inventory items" +create_text = "Create inventory item" + +[node name="DialogsGroup" parent="MainScrollContainer/VBoxContainer" instance=ExtResource("2_71uuj")] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_wku8y") +icon = ExtResource("6_y67sq") +color = Color(0.556863, 0.235294, 0.592157, 0.74902) +title = "Dialog trees" +create_text = "Create dialog tree" diff --git a/addons/popochiu/editor/main_dock/tab_room/tab_room.gd b/addons/popochiu/editor/main_dock/tab_room/tab_room.gd new file mode 100644 index 0000000..2d73ddd --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_room/tab_room.gd @@ -0,0 +1,405 @@ +@tool +extends VBoxContainer +## Handles the Room tab in Popochiu's dock + +const OBJECT_ROW_FOLDER = "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/" +const POPOCHIU_OBJECT_ROW_SCENE = preload(OBJECT_ROW_FOLDER + "popochiu_object_row.tscn") +const PopochiuRoomObjectRow = preload( + "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/" + + "room_object_row/popochiu_room_object_row.gd" +) + +var opened_room: PopochiuRoom = null +var opened_room_state_path: String = "" + +var _rows_paths := [] +var _last_selected: PopochiuRoomObjectRow = null +var _characters_in_room := [] +var _btn_add_character: MenuButton +var _delete_dialog: PopochiuEditorHelper.DeleteConfirmation + +@onready var _types: Dictionary = { + PopochiuResources.Types.PROP: { + group = %PropsGroup as PopochiuGroup, + popup = PopochiuEditorHelper.CREATE_PROP, + method = "get_props", + type_class = PopochiuProp, + parent = "Props" + }, + PopochiuResources.Types.HOTSPOT: { + group = %HotspotsGroup as PopochiuGroup, + popup = PopochiuEditorHelper.CREATE_HOTSPOT, + method = "get_hotspots", + type_class = PopochiuHotspot, + parent = "Hotspots" + }, + PopochiuResources.Types.REGION: { + group = %RegionsGroup as PopochiuGroup, + popup = PopochiuEditorHelper.CREATE_REGION, + method = "get_regions", + type_class = PopochiuRegion, + parent = "Regions" + }, + PopochiuResources.Types.MARKER: { + group = %MarkersGroup as PopochiuGroup, + popup = PopochiuEditorHelper.CREATE_MARKER, + method = "get_markers", + type_class = Marker2D, + parent = "Markers" + }, + PopochiuResources.Types.WALKABLE_AREA: { + group = %WalkableAreasGroup as PopochiuGroup, + popup = PopochiuEditorHelper.CREATE_WALKABLE_AREA, + method = "get_walkable_areas", + type_class = PopochiuWalkableArea, + parent = "WalkableAreas" + }, + PopochiuResources.Types.CHARACTER: { + group = %CharactersGroup as PopochiuGroup, + method = "get_characters", + type_class = PopochiuCharacter, + parent = "Characters" + } +} +@onready var popochiu_filter: LineEdit = %PopochiuFilter +@onready var room_name: Button = %RoomName +@onready var no_room_info: Label = %NoRoomInfo +@onready var tool_buttons: HBoxContainer = %ToolButtons +@onready var btn_script: Button = %BtnScript +@onready var btn_resource: Button = %BtnResource +@onready var btn_resource_script: Button = %BtnResourceScript + + +#region Godot ###################################################################################### +func _ready() -> void: + popochiu_filter.groups = _types + + # Setup the button that will allow to add characters to the room + _btn_add_character = MenuButton.new() + _btn_add_character.text = "Add character to room" + _btn_add_character.icon = get_theme_icon("Add", "EditorIcons") + _btn_add_character.flat = false + _btn_add_character.size_flags_horizontal = SIZE_SHRINK_END + + _btn_add_character.add_theme_stylebox_override("normal", get_theme_stylebox("normal", "Button")) + _btn_add_character.add_theme_stylebox_override("hover", get_theme_stylebox("hover", "Button")) + _btn_add_character.add_theme_stylebox_override( + "pressed", get_theme_stylebox("pressed", "Button") + ) + + _btn_add_character.about_to_popup.connect(_on_add_character_pressed) + + _types[PopochiuResources.Types.CHARACTER].group.add_header_button(_btn_add_character) + + # Disable all buttons by default until a PopochiuRoom is opened in the editor + room_name.hide() + popochiu_filter.hide() + no_room_info.show() + tool_buttons.hide() + + btn_script.icon = get_theme_icon("Script", "EditorIcons") + btn_resource.icon = get_theme_icon("Object", "EditorIcons") + btn_resource_script.icon = get_theme_icon("GDScript", "EditorIcons") + + room_name.pressed.connect(_select_file) + btn_script.pressed.connect(_open_script) + btn_resource.pressed.connect(_edit_resource) + btn_resource_script.pressed.connect(_open_resource_script) + + for t in _types.values(): + t.group.disable_create() + + if t.has("popup"): + t.group.create_clicked.connect(PopochiuEditorHelper.show_creation_popup.bind(t.popup)) + + +#endregion + +#region Public ##################################################################################### +func scene_changed(scene_root: Node) -> void: + # Set the default tab state + if is_instance_valid(opened_room): + await _clear_content() + + if not scene_root is PopochiuRoom: + return + + if scene_root is PopochiuRoom and scene_root.script_name.is_empty(): + PopochiuUtils.print_error("This room doesn't have a [code]script_name[/code] value!") + return + + if opened_room == scene_root: + return + + # Updated the opened room's info + opened_room = scene_root + opened_room_state_path = PopochiuResources.get_data_value( + "rooms", opened_room.script_name, "" + ) + + if not PopochiuEditorHelper.undo_redo.history_changed.is_connected(_check_undoredo_history): + PopochiuEditorHelper.undo_redo.history_changed.connect(_check_undoredo_history) + + room_name.text = opened_room.script_name + + room_name.show() + tool_buttons.show() + popochiu_filter.show() + _btn_add_character.disabled = false + + # Fill info of Props, Hotspots, Walkable areas, Regions and Points + for type_id in _types: + for child in opened_room.call(_types[type_id].method): + _create_row_in_dock(type_id, child) + + _types[type_id].group.enable_create() + + # Listen to node additions/deletions in container nodes + var container: Node2D = opened_room.get_node(_types[type_id].parent) + + container.child_entered_tree.connect(_on_child_added.bind(type_id)) + container.child_exiting_tree.connect(_on_child_removed.bind(type_id)) + + no_room_info.hide() + get_parent().current_tab = 1 + + +func scene_closed(filepath: String) -> void: + if is_instance_valid(opened_room) and opened_room.scene_file_path == filepath: + _clear_content() + + +#endregion + +#region Private #################################################################################### +func _clear_content() -> void: + for type_id in _types: + var container: Node2D = opened_room.get_node(_types[type_id].parent) + + if container.child_entered_tree.is_connected(_on_child_added): + container.child_entered_tree.disconnect(_on_child_added) + + if container.child_exiting_tree.is_connected(_on_child_removed): + container.child_exiting_tree.disconnect(_on_child_removed) + + if PopochiuEditorHelper.undo_redo.history_changed.is_connected(_check_undoredo_history): + PopochiuEditorHelper.undo_redo.history_changed.disconnect(_check_undoredo_history) + + opened_room = null + opened_room_state_path = "" + + _characters_in_room.clear() + _rows_paths.clear() + room_name.hide() + tool_buttons.hide() + popochiu_filter.hide() + no_room_info.show() + + if is_instance_valid(_last_selected): + _last_selected.deselect() + _last_selected = null + + for t: Dictionary in _types.values(): + t.group.clear_list() + t.group.disable_create() + + _btn_add_character.disabled = true + await get_tree().process_frame + + +func _create_object_row( + type: int, node_name: String, path := "", node_path := "" +) -> PopochiuRoomObjectRow: + var object_row_instance := POPOCHIU_OBJECT_ROW_SCENE.instantiate() + object_row_instance.set_script(PopochiuRoomObjectRow) + var new_obj: PopochiuRoomObjectRow = object_row_instance + + new_obj.name = node_name + new_obj.type = type + new_obj.path = path + new_obj.node_path = node_path + new_obj.clicked.connect(_select_in_tree) + + _rows_paths.append("%s/%d/%s" % [opened_room.script_name, type, node_name]) + + return new_obj + + +func _select_in_tree(por: PopochiuRoomObjectRow) -> void: + if _last_selected and _last_selected != por: + _last_selected.deselect() + + if is_instance_valid(opened_room): + var node := opened_room.get_node("%s/%s" % [_types[por.type].parent, por.node_path]) + PopochiuEditorHelper.select_node(node) + + _last_selected = por + + +func _select_file() -> void: + EditorInterface.select_file(opened_room.scene_file_path) + + +func _open_script() -> void: + EditorInterface.select_file(opened_room.get_script().resource_path) + EditorInterface.set_main_screen_editor("Script") + EditorInterface.edit_script(opened_room.get_script()) + + +func _edit_resource() -> void: + EditorInterface.select_file(opened_room_state_path) + EditorInterface.edit_resource(load(opened_room_state_path)) + + +func _open_resource_script() -> void: + var prd: PopochiuRoomData = load(opened_room_state_path) + EditorInterface.select_file(prd.get_script().resource_path) + EditorInterface.set_main_screen_editor("Script") + EditorInterface.edit_resource(prd.get_script()) + + +# Removes the character from the room +func _on_remove_character_pressed(row: PopochiuRoomObjectRow) -> void: + _delete_dialog = PopochiuEditorHelper.DELETE_CONFIRMATION_SCENE.instantiate() + _delete_dialog.title = "Remove character in room" + _delete_dialog.message = "Are you sure you want to remove [b]%s[/b] from this room?" % row.name + _delete_dialog.on_confirmed = _on_remove_character_confirmed.bind(row) + + PopochiuEditorHelper.show_delete_confirmation(_delete_dialog) + + +func _on_remove_character_confirmed(row: PopochiuRoomObjectRow) -> void: + _characters_in_room.erase(str(row.name)) + opened_room.get_node("Characters").get_node("Character%s *" % row.name).queue_free() + row.queue_free() + EditorInterface.save_scene() + + +# Fills the list to show after pressing "+ Add character to room" and listens to selections to add +# the clicked character to the room +func _on_add_character_pressed() -> void: + var characters_menu := _btn_add_character.get_popup() + characters_menu.clear() + + var idx := 0 + for key in PopochiuResources.get_section_keys("characters"): + characters_menu.add_item(key, idx) + characters_menu.set_item_disabled(idx, _characters_in_room.has(key)) + + idx += 1 + + if not characters_menu.id_pressed.is_connected(_on_character_selected): + characters_menu.id_pressed.connect(_on_character_selected) + + +# Adds the clicked character in the "+ Add character to room" menu to the +# current room +func _on_character_selected(id: int) -> void: + var characters_menu := _btn_add_character.get_popup() + var char_name := characters_menu.get_item_text( + characters_menu.get_item_index(id) + ) + var instance: PopochiuCharacter = (load( + "res://game/characters/%s/character_%s.tscn".replace("%s", char_name.to_snake_case()) + ) as PackedScene).instantiate(PackedScene.GEN_EDIT_STATE_INSTANCE) + + opened_room.get_node("Characters").add_child(instance) + instance.owner = opened_room + + EditorInterface.save_scene() + PopochiuEditorHelper.select_node(instance) + + +## Called when a [param child] is added to the room's tree without using the Popochiu dock. +## [param type_id] can be used to classify the object (prop, hotspot, etc.). +func _create_row_in_dock(type_id: int, child: Node) -> PopochiuRoomObjectRow: + var row: PopochiuRoomObjectRow = null + + if child is PopochiuCharacter: + # Get the script_name of the character + var char_name: String = child.name.trim_prefix("Character").rstrip(" *") + _characters_in_room.append(char_name) + + # Create the row for the character + row = _create_object_row( + type_id, + char_name, + "res://game/characters/%s/character_%s.tscn".replace("%s", char_name.to_snake_case()), + child.name + ) + row.is_menu_hidden = true + _types[type_id].group.add(row) + + # Create button to remove the character from the room + var remove_btn := Button.new() + remove_btn.icon = get_theme_icon("Remove", "EditorIcons") + remove_btn.tooltip_text = "Remove character from room" + remove_btn.flat = true + + remove_btn.pressed.connect(_on_remove_character_pressed.bind(row)) + row.add_button(remove_btn) + elif is_instance_of(child, _types[type_id].type_class): + var row_path := _get_row_path(type_id, child) + if row_path in _rows_paths: return + + var node_path := _get_node_path(type_id, child) + row = _create_object_row(type_id, child.name, row_path, node_path) + _types[type_id].group.add(row) + + return row + + +func _get_row_path(type_id: int, child: Node) -> String: + var row_path := child.scene_file_path + + if row_path.is_empty() and child.script and not "addons" in child.script.resource_path: + row_path = child.script.resource_path + + return row_path + + +func _get_node_path(type_id: int, child: Node) -> String: + return String(child.get_path()).split("%s/" % _types[type_id].parent)[1] + + +func _on_child_added(node: Node, type_id: int) -> void: + _create_row_in_dock(type_id, node) + + if not is_instance_of(node, _types[type_id].type_class): return + + node.position = Vector2( + ProjectSettings.get_setting(PopochiuResources.DISPLAY_WIDTH), + ProjectSettings.get_setting(PopochiuResources.DISPLAY_HEIGHT) + ) / 2.0 + + +func _on_child_removed(node: Node, type_id: int) -> void: + if not is_instance_of(node, _types[type_id].type_class): return + + var node_name := node.name + + if node is PopochiuCharacter: + # Get the script_name of the character + node_name = node_name.lstrip("Character").rstrip(" *") + _characters_in_room.erase(str(node_name)) + else: + _rows_paths.erase("%s/%d/%s" % [opened_room.script_name, type_id, node_name]) + + _types[type_id].group.remove_by_name(node_name) + + +func _check_undoredo_history() -> void: + if not opened_room or not is_instance_valid(opened_room): + return + + var walkable_areas: Array = opened_room.call( + _types[PopochiuResources.Types.WALKABLE_AREA].method + ) + + if walkable_areas.is_empty(): return + + for wa: PopochiuWalkableArea in walkable_areas: + (wa.get_node("Perimeter") as NavigationRegion2D).bake_navigation_polygon() + + +#endregion diff --git a/addons/popochiu/editor/main_dock/tab_room/tab_room.gd.uid b/addons/popochiu/editor/main_dock/tab_room/tab_room.gd.uid new file mode 100644 index 0000000..7b0fbcd --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_room/tab_room.gd.uid @@ -0,0 +1 @@ +uid://hbfnuhgcjrtl diff --git a/addons/popochiu/editor/main_dock/tab_room/tab_room.tscn b/addons/popochiu/editor/main_dock/tab_room/tab_room.tscn new file mode 100644 index 0000000..49f8d1e --- /dev/null +++ b/addons/popochiu/editor/main_dock/tab_room/tab_room.tscn @@ -0,0 +1,193 @@ +[gd_scene load_steps=18 format=3 uid="uid://q1bjkxavt2ay"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_room/tab_room.gd" id="1_dnc56"] +[ext_resource type="PackedScene" uid="uid://b55ialbvpilxv" path="res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn" id="2"] +[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_filter.gd" id="2_bv3t4"] +[ext_resource type="Texture2D" uid="uid://bj4bxswex7nsl" path="res://addons/popochiu/icons/prop.png" id="3_rksqc"] +[ext_resource type="Texture2D" uid="uid://jbdlyvx4gumd" path="res://addons/popochiu/icons/hotspot.png" id="4_6mx6c"] +[ext_resource type="Texture2D" uid="uid://dvh13sj4uj4b2" path="res://addons/popochiu/icons/walkable_area.png" id="5_j6ot2"] +[ext_resource type="Texture2D" uid="uid://cosxi1ulfp7rg" path="res://addons/popochiu/icons/region.png" id="6_2h2fq"] +[ext_resource type="Texture2D" uid="uid://btdsnflrn3j6o" path="res://addons/popochiu/icons/point.png" id="7_8ygji"] +[ext_resource type="Texture2D" uid="uid://mir6j58lju3l" path="res://addons/popochiu/icons/character.png" id="9_4yetu"] + +[sub_resource type="Image" id="Image_xqhe0"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_51sph"] +image = SubResource("Image_xqhe0") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_s3433"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wj0h8"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_m7com"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_b8j46"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ttmyn"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_30r2w"] +content_margin_left = 8.0 +content_margin_right = 8.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.6, 0.6, 0.6, 1) + +[node name="TabRoom" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource("1_dnc56") + +[node name="PopochiuFilter" type="LineEdit" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 2 +placeholder_text = "Filter Popochiu objects" +clear_button_enabled = true +right_icon = SubResource("ImageTexture_51sph") +script = ExtResource("2_bv3t4") + +[node name="RoomName" type="Button" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 2 +text = "Room name" + +[node name="ToolButtons" type="HBoxContainer" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 2 +alignment = 1 + +[node name="BtnScript" type="Button" parent="ToolButtons"] +unique_name_in_owner = true +layout_mode = 2 +text = "Script" +icon = SubResource("ImageTexture_51sph") + +[node name="BtnResource" type="Button" parent="ToolButtons"] +unique_name_in_owner = true +layout_mode = 2 +text = "State" +icon = SubResource("ImageTexture_51sph") + +[node name="BtnResourceScript" type="Button" parent="ToolButtons"] +unique_name_in_owner = true +layout_mode = 2 +text = "State" +icon = SubResource("ImageTexture_51sph") + +[node name="RoomScrollContainer" type="ScrollContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="RoomScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="NoRoomInfo" type="Label" parent="RoomScrollContainer/VBoxContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(312, 0) +layout_mode = 2 +text = "Open a room in Main tab to see or create Props, Hotspots, Regions and Points." +autowrap_mode = 3 + +[node name="PropsGroup" parent="RoomScrollContainer/VBoxContainer" instance=ExtResource("2")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_s3433") +icon = ExtResource("3_rksqc") +title = "Props" +create_text = "Create prop" + +[node name="HotspotsGroup" parent="RoomScrollContainer/VBoxContainer" instance=ExtResource("2")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_wj0h8") +icon = ExtResource("4_6mx6c") +title = "Hotspots" +create_text = "Create hotspot" + +[node name="WalkableAreasGroup" parent="RoomScrollContainer/VBoxContainer" instance=ExtResource("2")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_m7com") +icon = ExtResource("5_j6ot2") +title = "Walkable areas" +create_text = "Create walkable area" + +[node name="RegionsGroup" parent="RoomScrollContainer/VBoxContainer" instance=ExtResource("2")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_b8j46") +icon = ExtResource("6_2h2fq") +title = "Regions" +create_text = "Create regions" + +[node name="MarkersGroup" parent="RoomScrollContainer/VBoxContainer" instance=ExtResource("2")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_ttmyn") +icon = ExtResource("7_8ygji") +title = "Markers" +create_text = "Create marker" + +[node name="CharactersGroup" parent="RoomScrollContainer/VBoxContainer" instance=ExtResource("2")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_30r2w") +icon = ExtResource("9_4yetu") +title = "Characters in room" +can_create = false +create_text = "Add character to room" diff --git a/addons/popochiu/editor/popups/create_object/create_character/create_character.gd b/addons/popochiu/editor/popups/create_object/create_character/create_character.gd new file mode 100644 index 0000000..5a7ac68 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_character/create_character.gd @@ -0,0 +1,80 @@ +@tool +extends "res://addons/popochiu/editor/popups/create_object/create_object.gd" +## Creates a new [PopochiuCharacter]. +## +## It creates all the necessary files to make a [PopochiuCharacter] to work and to +## store its state: +## - character_xxx.tscn +## - character_xxx.gd +## - character_xxx.tres +## - character_xxx_state.gd + +var _new_character_name := "" +var _factory: PopochiuCharacterFactory +var _show_set_as_pc := false : set = set_show_set_as_pc + +@onready var set_as_pc_panel: PanelContainer = %SetAsPCPanel +@onready var rtl_is_pc: RichTextLabel = %RtlIsPC +@onready var btn_is_pc: CheckBox = %BtnIsPC + + +#region Godot ###################################################################################### +func _ready() -> void: + _info_files = _info_files.replace("&t", "character") + + super() + + +#endregion + +#region Virtual #################################################################################### +func _create() -> Object: + if _new_character_name.is_empty(): + error_feedback.show() + return null + + # Setup the prop helper and use it to create the prop ------------------------------------------ + _factory = PopochiuCharacterFactory.new() + if _factory.create(_new_character_name, btn_is_pc.button_pressed) != ResultCodes.SUCCESS: + # TODO: show a message in the popup! + return null + await get_tree().create_timer(0.1).timeout + + return _factory.get_obj_scene() + + +func _on_about_to_popup() -> void: + PopochiuEditorHelper.override_font(rtl_is_pc, "normal_font", "main") + PopochiuEditorHelper.override_font(rtl_is_pc, "bold_font", "bold") + PopochiuEditorHelper.override_font(rtl_is_pc, "italics_font", "doc_italic") + + _check_if_has_pc() + info.hide() + + +func _set_info_text() -> void: + _new_character_name = _name.to_snake_case() + _target_folder = PopochiuResources.CHARACTERS_PATH.path_join(_new_character_name) + + info.text = (_info_text % _target_folder).replace("&n", _new_character_name) + + +#endregion + +#region SetGet ##################################################################################### +func set_show_set_as_pc(value: bool) -> void: + _show_set_as_pc = value + + if is_instance_valid(set_as_pc_panel): + set_as_pc_panel.visible = _show_set_as_pc + + +#endregion + +#region Private #################################################################################### +func _check_if_has_pc() -> void: + # Display the checkbox if the game's PC has not been defined yet + _show_set_as_pc = PopochiuResources.get_data_value("setup", "pc", "").is_empty() + + +#endregion diff --git a/addons/popochiu/editor/popups/create_object/create_character/create_character.gd.uid b/addons/popochiu/editor/popups/create_object/create_character/create_character.gd.uid new file mode 100644 index 0000000..aa03833 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_character/create_character.gd.uid @@ -0,0 +1 @@ +uid://dgy4in4sknc82 diff --git a/addons/popochiu/editor/popups/create_object/create_character/create_character.tscn b/addons/popochiu/editor/popups/create_object/create_character/create_character.tscn new file mode 100644 index 0000000..63326b5 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_character/create_character.tscn @@ -0,0 +1,36 @@ +[gd_scene load_steps=3 format=3 uid="uid://q0mx8fu63d03"] + +[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_dtng2"] +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_character/create_character.gd" id="2_8yo43"] + +[node name="CreateCharacterConfirmation" instance=ExtResource("1_dtng2")] +script = ExtResource("2_8yo43") + +[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"] +text = "Character name:" + +[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"] +text = "Use a descriptive name in PascalCase (e.g. Glottis, MannyCalavera, HectorLeMans)." + +[node name="SetAsPCPanel" type="PanelContainer" parent="PanelContainer/VBoxContainer" index="4"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/SetAsPCPanel" index="0"] +layout_mode = 2 + +[node name="RtlIsPC" type="RichTextLabel" parent="PanelContainer/VBoxContainer/SetAsPCPanel/HBoxContainer" index="0"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +bbcode_enabled = true +text = "You don't have a Player-controlled Character ([b]PC[/b]) yet. Do you want this character to become the [b]PC[/b]? + +[i]You can change this later in the context menu for each character or by code during runtime.[/i]" +fit_content = true +scroll_active = false + +[node name="BtnIsPC" type="CheckBox" parent="PanelContainer/VBoxContainer/SetAsPCPanel/HBoxContainer" index="1"] +unique_name_in_owner = true +layout_mode = 2 diff --git a/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd new file mode 100644 index 0000000..80f3e91 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd @@ -0,0 +1,46 @@ +@tool +extends "res://addons/popochiu/editor/popups/create_object/create_object.gd" +## Creates a new [PopochiuDialog]. +## +## It creates all the necessary files to make a [PopochiuDialog] to work: +## - dialog_xxx.gd (The script where the behavior for each dialog option is defined) +## - dialog_xxx.tres (The Resource file used to create the dialog options in the Inspector) + +var _new_dialog_name := "" +var _factory: PopochiuDialogFactory + + +#region Godot ###################################################################################### +func _ready() -> void: + _info_files = "[code]- &t_&n.gd\n- &t_&n.tres[/code]" + _info_files = _info_files.replace("&t", "dialog") + + super() + + +#endregion + +#region Virtual #################################################################################### +func _create() -> Object: + if _new_dialog_name.is_empty(): + error_feedback.show() + return null + + # Setup the prop helper and use it to create the prop ------------------------------------------ + _factory = PopochiuDialogFactory.new() + if _factory.create(_new_dialog_name) != ResultCodes.SUCCESS: + # TODO: show a message in the popup! + return null + await get_tree().create_timer(0.1).timeout + + return _factory.get_obj_resource() + + +func _set_info_text() -> void: + _new_dialog_name = _name.to_snake_case() + _target_folder = PopochiuResources.DIALOGS_PATH.path_join(_new_dialog_name) + + info.text = (_info_text % _target_folder).replace("&n", _new_dialog_name) + + +#endregion diff --git a/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd.uid b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd.uid new file mode 100644 index 0000000..a053e54 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd.uid @@ -0,0 +1 @@ +uid://dh6csjemfnk6a diff --git a/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.tscn b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.tscn new file mode 100644 index 0000000..459e756 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=3 uid="uid://dlhcgfucwffgr"] + +[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_i1dna"] +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd" id="2_ep8bb"] + +[node name="CreateDialogConfirmation" instance=ExtResource("1_i1dna")] +script = ExtResource("2_ep8bb") + +[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"] +text = "Dialog name:" + +[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"] +text = "Use a descriptive name in PascalCase (e.g. GarageGlottis, OfficeEvaDesk)." diff --git a/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd new file mode 100644 index 0000000..8f0f4ee --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd @@ -0,0 +1,41 @@ +@tool +extends "res://addons/popochiu/editor/popups/create_object/create_room_object.gd" +## Creates a new hotspot in the room. + +var _new_hotspot_name := "" +var _factory: PopochiuHotspotFactory + + +#region Godot ###################################################################################### +func _ready() -> void: + _group_folder = "hotspots" + _info_files = _info_files.replace("&t", "hotspot") + + super() + + +#endregion + +#region Virtual #################################################################################### +func _create() -> Object: + # Setup the region helper and use it to create the hotspot ------------------------------------- + _factory = PopochiuHotspotFactory.new() + var param := PopochiuHotspotFactory.PopochiuHotspotFactoryParam.new() + param.obj_name = _new_hotspot_name + param.room = _room + + if _factory.create(param) != ResultCodes.SUCCESS: + # TODO: show a message in the popup! + return null + await get_tree().create_timer(0.1).timeout + + return _factory.get_obj_scene() + + +func _set_info_text() -> void: + _new_hotspot_name = _name.to_snake_case() + _target_folder = _group_folder % _new_hotspot_name + info.text = _info_text.replace("&n", _new_hotspot_name) + + +#endregion diff --git a/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd.uid b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd.uid new file mode 100644 index 0000000..4c83407 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd.uid @@ -0,0 +1 @@ +uid://xvpu80vgsfsb diff --git a/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.tscn b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.tscn new file mode 100644 index 0000000..329dba7 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=3 uid="uid://b7nvdcut38577"] + +[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_feyc5"] +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd" id="2_hf5i2"] + +[node name="CreateHotspotConfirmation" instance=ExtResource("1_feyc5")] +script = ExtResource("2_hf5i2") +title = "Create PopochiuHotspot" + +[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"] +text = "Hotspot name:" + +[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"] +text = "Use a descriptive name in PascalCase (e.g. Sky, CaveEntrance)." diff --git a/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd new file mode 100644 index 0000000..894e020 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd @@ -0,0 +1,48 @@ +@tool +extends "res://addons/popochiu/editor/popups/create_object/create_object.gd" +## Creates a [PopochiuInventoryItem]. +## +## It creates all the necessary files to make a [PopochiuInventoryItem] to work and +## to store its state: +## - inventory_item_xxx.tscn +## - inventory_item_xxx.gd +## - inventory_item_xxx.tres +## - inventory_item_xxx_state.gd + +var _new_item_name := "" +var _factory: PopochiuInventoryItemFactory + + +#region Godot ###################################################################################### +func _ready() -> void: + _info_files = _info_files.replace("&t", "inventory_item") + + super() + + +#endregion + +#region Virtual #################################################################################### +func _create() -> Object: + if _new_item_name.is_empty(): + error_feedback.show() + return null + + # Setup the prop helper and use it to create the prop ------------------------------------------ + _factory = PopochiuInventoryItemFactory.new() + if _factory.create(_new_item_name) != ResultCodes.SUCCESS: + # TODO: show a message in the popup! + return null + await get_tree().create_timer(0.1).timeout + + return _factory.get_obj_scene() + + +func _set_info_text() -> void: + _new_item_name = _name.to_snake_case() + _target_folder = PopochiuResources.INVENTORY_ITEMS_PATH.path_join(_new_item_name) + + info.text = (_info_text % _target_folder).replace("&n", _new_item_name) + + +#endregion diff --git a/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd.uid b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd.uid new file mode 100644 index 0000000..6d35c0d --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd.uid @@ -0,0 +1 @@ +uid://do48fujcr8rf1 diff --git a/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.tscn b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.tscn new file mode 100644 index 0000000..d3e83ad --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=3 uid="uid://dl6pj0tylid8w"] + +[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_rtecw"] +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd" id="2_3sytb"] + +[node name="CreateInventoryItemConfirmation" instance=ExtResource("1_rtecw")] +script = ExtResource("2_3sytb") +title = "Create PopochiuInventoryItem" + +[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"] +text = "Item name:" + +[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"] +text = "Use a descriptive name in PascalCase (e.g. Scythe, WorkOrder, DeckOfCards)." diff --git a/addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd new file mode 100644 index 0000000..3c25afd --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd @@ -0,0 +1,41 @@ +@tool +extends "res://addons/popochiu/editor/popups/create_object/create_room_object.gd" +# Creates a new marker in the room. + +var _new_marker_name := "" +var _factory: PopochiuMarkerFactory + + +#region Godot ###################################################################################### +func _ready() -> void: + _group_folder = "markers" + _info_files = "[code]- marker_&n.tscn[/code]" + + super() + + +#endregion + +#region Virtual #################################################################################### +func _create() -> Object: + # Setup the region helper and use it to create the marker + _factory = PopochiuMarkerFactory.new() + var param := PopochiuMarkerFactory.PopochiuRoomObjFactoryParam.new() + param.obj_name = _new_marker_name + param.room = _room + + if _factory.create(param) != ResultCodes.SUCCESS: + # TODO: show a message in the popup! + return null + await get_tree().create_timer(0.1).timeout + + return _factory.get_obj_scene() + + +func _set_info_text() -> void: + _new_marker_name = _name.to_snake_case() + _target_folder = _group_folder % _new_marker_name + info.text = _info_text.replace("&n", _new_marker_name) + + +#endregion diff --git a/addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd.uid b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd.uid new file mode 100644 index 0000000..0907ac5 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd.uid @@ -0,0 +1 @@ +uid://i8up0xibpyic diff --git a/addons/popochiu/editor/popups/create_object/create_marker/create_marker.tscn b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.tscn new file mode 100644 index 0000000..8d01d4b --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=3 uid="uid://cju64rmwue0hb"] + +[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_vwqi7"] +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd" id="2_0x1s8"] + +[node name="CreateMarkerConfirmation" instance=ExtResource("1_vwqi7")] +script = ExtResource("2_0x1s8") + +[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"] +text = "Marker name:" + +[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"] +text = "Use a descriptive name in PascalCase (e.g. Left, SouthEast)." diff --git a/addons/popochiu/editor/popups/create_object/create_object.gd b/addons/popochiu/editor/popups/create_object/create_object.gd new file mode 100644 index 0000000..fa99fae --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_object.gd @@ -0,0 +1,111 @@ +@tool +extends Control + +signal content_changed + +@export var title := "" + +var _info_folder := "In [b]%s[/b] the following files will be created:\n\n" +var _info_files := "[code]- &t_&n.tscn\n- &t_&n.gd\n- &t_&n.tres\n- &t_&n_state.gd[/code]" +var _info_text := "" +var _name := "" +var _target_folder := "" +var _dflt_size := Vector2.ZERO + +@onready var input: LineEdit = %Input +@onready var error_container: HBoxContainer = %ErrorContainer +@onready var error_icon: TextureRect = %ErrorIcon +@onready var error_feedback: Label = %ErrorFeedback +@onready var info: RichTextLabel = %Info + + +#region Godot ###################################################################################### +func _ready() -> void: + _info_text = _info_folder + _info_files + + # Connect to children's signals + input.text_changed.connect(_update_name) + + error_container.hide() + + +#endregion + +#region Virtual #################################################################################### +func _create() -> Object: + return null + + +func _on_about_to_popup() -> void: + pass + + +func _set_info_text() -> void: + pass + + +#endregion + +#region Public ##################################################################################### +func on_about_to_popup() -> void: + PopochiuEditorHelper.override_font(info, "normal_font", "main") + PopochiuEditorHelper.override_font(info, "bold_font", "bold") + PopochiuEditorHelper.override_font(info, "mono_font", "source") + + error_icon.texture = get_theme_icon("StatusError", "EditorIcons") + error_feedback.add_theme_color_override("font_color", get_theme_color("error_color", "Editor")) + + _on_about_to_popup() + await get_tree().process_frame + + _dflt_size = get_child(0).size + content_changed.emit() + + +func create() -> void: + var created_object := await _create() + if not created_object or not is_instance_valid(created_object): + return + await PopochiuEditorHelper.filesystem_scanned() + + # Open the scene in the editor and select the file in the FileSystem dock ---------------------- + if created_object is Node: + EditorInterface.select_file(created_object.scene_file_path) + EditorInterface.open_scene_from_path(created_object.scene_file_path) + else: + EditorInterface.select_file(created_object.resource_path) + EditorInterface.edit_resource(load(created_object.resource_path)) + + +#endregion + +#region Private #################################################################################### +func _update_name(new_text: String) -> void: + if error_container.visible: + error_container.hide() + + _name = new_text.to_pascal_case() + if _name.is_empty(): + info.text = "" + info.hide() + else: + _set_info_text() + info.show() + + # Check if another object with the same name is already created + if DirAccess.dir_exists_absolute(_target_folder): + error_feedback.text = "Another object with that name already exists!" + error_container.show() + + _info_updated() + (get_parent() as ConfirmationDialog).get_ok_button().disabled = error_container.visible + + +func _info_updated() -> void: + await get_tree().process_frame + + get_child(0).size.y = _dflt_size.y + content_changed.emit() + + +#endregion diff --git a/addons/popochiu/editor/popups/create_object/create_object.gd.uid b/addons/popochiu/editor/popups/create_object/create_object.gd.uid new file mode 100644 index 0000000..e102bfa --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_object.gd.uid @@ -0,0 +1 @@ +uid://drk6eqdx2gum0 diff --git a/addons/popochiu/editor/popups/create_object/create_object.tscn b/addons/popochiu/editor/popups/create_object/create_object.tscn new file mode 100644 index 0000000..813ae6c --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_object.tscn @@ -0,0 +1,76 @@ +[gd_scene load_steps=3 format=3 uid="uid://c1pfl2gwjjot5"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_object.gd" id="1_ksc3t"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_kdu1t"] + +[node name="CreateObjectConfirmation" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ksc3t") + +[node name="PanelContainer" type="PanelContainer" parent="."] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 66.0 +grow_horizontal = 2 +theme_override_styles/panel = SubResource("StyleBoxEmpty_kdu1t") + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +layout_mode = 2 + +[node name="InputContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/InputContainer"] +layout_mode = 2 +text = "Name:" + +[node name="Input" type="LineEdit" parent="PanelContainer/VBoxContainer/InputContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +draw_control_chars = true + +[node name="ErrorContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="ErrorIcon" type="TextureRect" parent="PanelContainer/VBoxContainer/ErrorContainer"] +unique_name_in_owner = true +layout_mode = 2 +expand_mode = 2 +stretch_mode = 5 + +[node name="ErrorFeedback" type="Label" parent="PanelContainer/VBoxContainer/ErrorContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(320, 0) +layout_mode = 2 +size_flags_horizontal = 3 +text = "Error!" +autowrap_mode = 2 + +[node name="HSeparator" type="HSeparator" parent="PanelContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Guide" type="Label" parent="PanelContainer/VBoxContainer"] +modulate = Color(1, 1, 1, 0.698039) +custom_minimum_size = Vector2(320, 0) +layout_mode = 2 +text = "Use a descriptive name in PascalCase (e.g. xxx)." +autowrap_mode = 2 + +[node name="Info" type="RichTextLabel" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +bbcode_enabled = true +text = "Additional info..." +fit_content = true +scroll_active = false diff --git a/addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd new file mode 100644 index 0000000..46d415a --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd @@ -0,0 +1,70 @@ +@tool +extends "res://addons/popochiu/editor/popups/create_object/create_room_object.gd" +## Allows you to create a new Prop for a room. +## +## If it has interaction, it will be assigned a script that will be saved in the prop's folder. + +var _new_prop_name := "" +var _factory: PopochiuPropFactory + +@onready var interaction_checkbox: CheckBox = %InteractionCheckbox + + +#region Godot ###################################################################################### +func _ready() -> void: + _group_folder = "props" + _info_files = _info_files.replace("&t", "prop") + + super() + + # Connect to children's signals + interaction_checkbox.toggled.connect(_interaction_toggled) + + +#endregion + +#region Virtual #################################################################################### +func _create() -> Object: + if _new_prop_name.is_empty(): + error_feedback.show() + return null + + # Setup the prop helper and use it to create the prop ------------------------------------------ + _factory = PopochiuPropFactory.new() + var param := PopochiuPropFactory.PopochiuPropFactoryParam.new() + param.obj_name = _new_prop_name + param.room = _room + param.is_interactive = interaction_checkbox.button_pressed + + if _factory.create(param) != ResultCodes.SUCCESS: + # TODO: show a message in the popup! + return null + await get_tree().create_timer(0.1).timeout + + return _factory.get_obj_scene() + + +func _set_info_text() -> void: + _new_prop_name = _name.to_snake_case() + _target_folder = _group_folder % _new_prop_name + + _update_info() + + +#endregion + +#region Private #################################################################################### +func _interaction_toggled(is_pressed: bool) -> void: + if is_pressed and not _name.is_empty(): + _update_info() + else: + info.text = "" + + _info_updated() + + +func _update_info() -> void: + info.text = _info_text.replace("&n", _new_prop_name) + + +#endregion diff --git a/addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd.uid b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd.uid new file mode 100644 index 0000000..c61ec88 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd.uid @@ -0,0 +1 @@ +uid://5wo0sonbxku7 diff --git a/addons/popochiu/editor/popups/create_object/create_prop/create_prop.tscn b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.tscn new file mode 100644 index 0000000..c2d8e9e --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=3 format=3 uid="uid://cpqg77rjfaa0l"] + +[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_l6xki"] +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd" id="2_c5stu"] + +[node name="CreatePropConfirmation" instance=ExtResource("1_l6xki")] +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("2_c5stu") +title = "Create PopochiuProp" + +[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"] +text = "Prop name:" + +[node name="InteractionContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer" index="1"] +layout_mode = 2 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/InteractionContainer" index="0"] +layout_mode = 2 +text = "Will this prop have interaction?" + +[node name="InteractionCheckbox" type="CheckBox" parent="PanelContainer/VBoxContainer/InteractionContainer" index="1"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="ErrorFeedback" parent="PanelContainer/VBoxContainer" index="2"] +text = "Prop name is mandatory!" + +[node name="Guide" parent="PanelContainer/VBoxContainer" index="4"] +text = "Use a descriptive name in PascalCase (e.g. Bucket or WineBottle)." diff --git a/addons/popochiu/editor/popups/create_object/create_region/create_region.gd b/addons/popochiu/editor/popups/create_object/create_region/create_region.gd new file mode 100644 index 0000000..c036e51 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_region/create_region.gd @@ -0,0 +1,45 @@ +@tool +extends "res://addons/popochiu/editor/popups/create_object/create_room_object.gd" +## Allows you to create a new Region for a room. + +var _new_region_name := "" +var _factory: PopochiuRegionFactory + + +#region Godot ###################################################################################### +func _ready() -> void: + _group_folder = "regions" + _info_files = _info_files.replace("&t", "region") + + super() + + +#endregion + +#region Virtual #################################################################################### +func _create() -> Object: + if _new_region_name.is_empty(): + error_feedback.show() + return null + + # Setup the region helper and use it to create the region -------------------------------------- + _factory = PopochiuRegionFactory.new() + var param := PopochiuRegionFactory.PopochiuRegionFactoryParam.new() + param.obj_name = _new_region_name + param.room = _room + + if _factory.create(param) != ResultCodes.SUCCESS: + # TODO: show a message in the popup! + return null + await get_tree().create_timer(0.1).timeout + + return _factory.get_obj_scene() + + +func _set_info_text() -> void: + _new_region_name = _name.to_snake_case() + _target_folder = _group_folder % _new_region_name + info.text = _info_text.replace("&n", _new_region_name) + + +#endregion diff --git a/addons/popochiu/editor/popups/create_object/create_region/create_region.gd.uid b/addons/popochiu/editor/popups/create_object/create_region/create_region.gd.uid new file mode 100644 index 0000000..570eee4 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_region/create_region.gd.uid @@ -0,0 +1 @@ +uid://dwjd4cv7i2mh diff --git a/addons/popochiu/editor/popups/create_object/create_region/create_region.tscn b/addons/popochiu/editor/popups/create_object/create_region/create_region.tscn new file mode 100644 index 0000000..09c7c49 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_region/create_region.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=3 uid="uid://crtkojrvhklpp"] + +[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_haco6"] +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_region/create_region.gd" id="2_ft6um"] + +[node name="CreateRegionConfirmation" instance=ExtResource("1_haco6")] +script = ExtResource("2_ft6um") + +[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"] +text = "Region name:" + +[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"] +text = "Use a descriptive name in PascalCase (e.g. Sand, StickyFloor)." diff --git a/addons/popochiu/editor/popups/create_object/create_room/create_room.gd b/addons/popochiu/editor/popups/create_object/create_room/create_room.gd new file mode 100644 index 0000000..da63c10 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_room/create_room.gd @@ -0,0 +1,80 @@ +@tool +extends "res://addons/popochiu/editor/popups/create_object/create_object.gd" +## Creates a [PopochiuRoom]. +## +## It creates all the necessary files to make a [PopochiuRoom] to work and +## to store its state: +## - room_xxx.tscn +## - room_xxx.gd +## - room_xxx.tres +## - room_xxx_state.gd + +var _new_room_name := "" +var _factory: PopochiuRoomFactory +var _show_set_as_main := false : set = set_show_set_as_main + +@onready var set_as_main_panel: PanelContainer = %SetAsMainPanel +@onready var rtl_is_main = %RtlIsMain +@onready var btn_is_main: CheckBox = %BtnIsMain + + +#region Godot ###################################################################################### +func _ready() -> void: + _info_files = _info_files.replace("&t", "room") + + super() + + +#endregion + +#region Virtual #################################################################################### +func _create() -> Object: + if _new_room_name.is_empty(): + error_feedback.show() + return null + + # Setup the prop helper and use it to create the prop ------------------------------------------ + _factory = PopochiuRoomFactory.new() + if _factory.create(_new_room_name, btn_is_main.button_pressed) != ResultCodes.SUCCESS: + # TODO: show a message in the popup! + return null + await get_tree().create_timer(0.1).timeout + + return _factory.get_obj_scene() + + +func _on_about_to_popup() -> void: + PopochiuEditorHelper.override_font(rtl_is_main, "normal_font", "main") + PopochiuEditorHelper.override_font(rtl_is_main, "bold_font", "bold") + PopochiuEditorHelper.override_font(rtl_is_main, "mono_font", "source") + + _check_if_first_room() + info.hide() + + +func _set_info_text() -> void: + _new_room_name = _name.to_snake_case() + _target_folder = PopochiuResources.ROOMS_PATH.path_join(_new_room_name) + + info.text = (_info_text % _target_folder).replace("&n", _new_room_name) + + +#endregion + +#region SetGet ##################################################################################### +func set_show_set_as_main(value: bool) -> void: + _show_set_as_main = value + + if is_instance_valid(set_as_main_panel): + set_as_main_panel.visible = _show_set_as_main + + +#endregion + +#region Private #################################################################################### +func _check_if_first_room() -> void: + # Display a checkbox if no main scene has been defined for the project yet + _show_set_as_main = ProjectSettings.get_setting(PopochiuResources.MAIN_SCENE, "").is_empty() + + +#endregion diff --git a/addons/popochiu/editor/popups/create_object/create_room/create_room.gd.uid b/addons/popochiu/editor/popups/create_object/create_room/create_room.gd.uid new file mode 100644 index 0000000..8da7ce1 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_room/create_room.gd.uid @@ -0,0 +1 @@ +uid://bb4d8aaeb33b2 diff --git a/addons/popochiu/editor/popups/create_object/create_room/create_room.tscn b/addons/popochiu/editor/popups/create_object/create_room/create_room.tscn new file mode 100644 index 0000000..ead6f28 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_room/create_room.tscn @@ -0,0 +1,38 @@ +[gd_scene load_steps=3 format=3 uid="uid://bsl3blhb8sw5"] + +[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_t4kty"] +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_room/create_room.gd" id="2_s1x3y"] + +[node name="CreateRoomConfirmation" instance=ExtResource("1_t4kty")] +script = ExtResource("2_s1x3y") +title = "Create PopochiuRoom" + +[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"] +text = "Room name:" + +[node name="ErrorFeedback" parent="PanelContainer/VBoxContainer" index="1"] +text = "A room name is mandatory!" + +[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"] +text = "Use a descriptive name in PascalCase (e.g. Garage or CasinoInterior)." + +[node name="SetAsMainPanel" type="PanelContainer" parent="PanelContainer/VBoxContainer" index="4"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/SetAsMainPanel" index="0"] +layout_mode = 2 + +[node name="RtlIsMain" type="RichTextLabel" parent="PanelContainer/VBoxContainer/SetAsMainPanel/HBoxContainer" index="0"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +bbcode_enabled = true +text = "You don't have a main scene. Do you want this room to become the main scene of the project? This will modify [code]ProjectSettings.application/run/main_scene[/code]." +fit_content = true +scroll_active = false + +[node name="BtnIsMain" type="CheckBox" parent="PanelContainer/VBoxContainer/SetAsMainPanel/HBoxContainer" index="1"] +unique_name_in_owner = true +layout_mode = 2 diff --git a/addons/popochiu/editor/popups/create_object/create_room_object.gd b/addons/popochiu/editor/popups/create_object/create_room_object.gd new file mode 100644 index 0000000..380c792 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_room_object.gd @@ -0,0 +1,37 @@ +@tool +extends "res://addons/popochiu/editor/popups/create_object/create_object.gd" + +var _room: Node2D = null +var _group_folder := "" + + +#region Godot ###################################################################################### +func _init() -> void: + _info_folder = "In [b]%s[/b] the following files will be created:\n\n" + _info_files = "[code]- &t_&n.tscn\n- &t_&n.gd[/code]" + + +func _ready() -> void: + if PopochiuEditorHelper.is_room(EditorInterface.get_edited_scene_root()): + _room = EditorInterface.get_edited_scene_root() + _group_folder = _room.scene_file_path.get_base_dir().path_join(_group_folder + "/%s") + _info_folder = _info_folder % _group_folder.replace("/%s", "/&n") + + super() + + +#endregion + +#region Public ##################################################################################### +func create() -> void: + var created_node: Node = await _create() + if not created_node or not is_instance_valid(created_node): + return + await PopochiuEditorHelper.filesystem_scanned() + + # Select the node in the Scene tree and its file in the FileSystem dock ------------------------ + EditorInterface.edit_node(created_node) + EditorInterface.select_file(created_node.scene_file_path) + + +#endregion diff --git a/addons/popochiu/editor/popups/create_object/create_room_object.gd.uid b/addons/popochiu/editor/popups/create_object/create_room_object.gd.uid new file mode 100644 index 0000000..30d3618 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_room_object.gd.uid @@ -0,0 +1 @@ +uid://drdiado6cgnqr diff --git a/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd new file mode 100644 index 0000000..0d3b39b --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd @@ -0,0 +1,41 @@ +@tool +extends "res://addons/popochiu/editor/popups/create_object/create_room_object.gd" +## Creates a new walkable area in a room. + +var _new_walkable_area_name := "" +var _factory: PopochiuWalkableAreaFactory + + +#region Godot ###################################################################################### +func _ready() -> void: + _group_folder = "walkable_areas" + _info_files = _info_files.replace("&t", "walkable_area") + + super() + + +#endregion + +#region Virtual #################################################################################### +func _create() -> Object: + # Setup the region helper and use it to create the region -------------------------------------- + _factory = PopochiuWalkableAreaFactory.new() + var param := PopochiuWalkableAreaFactory.PopochiuWalkableAreaFactoryParam.new() + param.obj_name = _new_walkable_area_name + param.room = _room + + if _factory.create(param) != ResultCodes.SUCCESS: + # TODO: show a message in the popup! + return null + await get_tree().create_timer(0.1).timeout + + return _factory.get_obj_scene() + + +func _set_info_text() -> void: + _new_walkable_area_name = _name.to_snake_case() + _target_folder = _group_folder % _new_walkable_area_name + info.text = _info_text.replace("&n", _new_walkable_area_name) + + +#endregion diff --git a/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd.uid b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd.uid new file mode 100644 index 0000000..74f506b --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd.uid @@ -0,0 +1 @@ +uid://bwyw1jtniru2c diff --git a/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.tscn b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.tscn new file mode 100644 index 0000000..360fb76 --- /dev/null +++ b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=3 uid="uid://ya4nebuu2575"] + +[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_4gtmy"] +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd" id="2_ey5rs"] + +[node name="CreateWalkableAreaConfirmation" instance=ExtResource("1_4gtmy")] +script = ExtResource("2_ey5rs") +title = "Create PopochiuWalkableArea" + +[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"] +text = "Walkable area name:" + +[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"] +text = "Use a descriptive name in PascalCase (e.g. Floor, SuspendedBridge)." diff --git a/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd new file mode 100644 index 0000000..4e11fb0 --- /dev/null +++ b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd @@ -0,0 +1,30 @@ +@tool +extends Control + +var title := "" +var message := "" +var ask := "" +var on_confirmed: Callable +var on_canceled: Callable + +@onready var message_rtl: RichTextLabel = %Message +@onready var extra: PanelContainer = %Extra +@onready var ask_rtl: RichTextLabel = %Ask +@onready var check_box: CheckBox = %CheckBox + + +#region Public ##################################################################################### +func on_about_to_popup() -> void: + PopochiuEditorHelper.override_font(message_rtl, "normal_font", "main") + PopochiuEditorHelper.override_font(message_rtl, "bold_font", "bold") + PopochiuEditorHelper.override_font(message_rtl, "mono_font", "source") + PopochiuEditorHelper.override_font(ask_rtl, "normal_font", "main") + PopochiuEditorHelper.override_font(ask_rtl, "bold_font", "bold") + PopochiuEditorHelper.override_font(ask_rtl, "mono_font", "source") + + message_rtl.text = message + ask_rtl.text = ask + extra.visible = !ask.is_empty() + + +#endregion diff --git a/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd.uid b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd.uid new file mode 100644 index 0000000..185eb71 --- /dev/null +++ b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd.uid @@ -0,0 +1 @@ +uid://p6esn0thbngm diff --git a/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.tscn b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.tscn new file mode 100644 index 0000000..2eaa350 --- /dev/null +++ b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.tscn @@ -0,0 +1,50 @@ +[gd_scene load_steps=2 format=3 uid="uid://bcb865akap0mt"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd" id="1_j7hpd"] + +[node name="DeleteConfirmation" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_j7hpd") + +[node name="PanelContainer" type="PanelContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +layout_mode = 2 + +[node name="Message" type="RichTextLabel" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +bbcode_enabled = true +text = "You're gonna delete [b]something[/b]" +fit_content = true + +[node name="Extra" type="PanelContainer" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Extra"] +layout_mode = 2 + +[node name="Ask" type="RichTextLabel" parent="PanelContainer/VBoxContainer/Extra/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +bbcode_enabled = true +text = "Delete also [b]this[/b]?" +fit_content = true + +[node name="CheckBox" type="CheckBox" parent="PanelContainer/VBoxContainer/Extra/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 diff --git a/addons/popochiu/editor/popups/migrations_panel/migration_step.gd b/addons/popochiu/editor/popups/migrations_panel/migration_step.gd new file mode 100644 index 0000000..8e94c6b --- /dev/null +++ b/addons/popochiu/editor/popups/migrations_panel/migration_step.gd @@ -0,0 +1,34 @@ +@tool +extends HBoxContainer + +@onready var check_box: CheckBox = $CheckBox +@onready var description: RichTextLabel = $Description +@onready var progress: TextureRect = $Progress + + +#region Godot ###################################################################################### +func _ready() -> void: + PopochiuEditorHelper.override_font(description, "normal_font", "output_source") + PopochiuEditorHelper.override_font(description, "bold_font", "output_source_bold") + PopochiuEditorHelper.override_font(description, "italics_font", "output_source_italic") + progress.hide() + + +#endregion + +#region Public ##################################################################################### +func start() -> void: + var idx := 1 + progress.visible = true + while progress.visible: + progress.texture = get_theme_icon("Progress%d" % idx, "EditorIcons") + await PopochiuEditorHelper.secs_passed(0.1) + + idx = wrapi(idx + 1, 1, 9) + + +func stop() -> void: + progress.visible = false + + +#endregion diff --git a/addons/popochiu/editor/popups/migrations_panel/migration_step.gd.uid b/addons/popochiu/editor/popups/migrations_panel/migration_step.gd.uid new file mode 100644 index 0000000..47d049c --- /dev/null +++ b/addons/popochiu/editor/popups/migrations_panel/migration_step.gd.uid @@ -0,0 +1 @@ +uid://brruh2jvx85oe diff --git a/addons/popochiu/editor/popups/migrations_panel/migration_step.tscn b/addons/popochiu/editor/popups/migrations_panel/migration_step.tscn new file mode 100644 index 0000000..e966d70 --- /dev/null +++ b/addons/popochiu/editor/popups/migrations_panel/migration_step.tscn @@ -0,0 +1,933 @@ +[gd_scene load_steps=8 format=3 uid="uid://c5hle0de82qww"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/migrations_panel/migration_step.gd" id="1_if6f3"] + +[sub_resource type="Image" id="Image_4lhx8"] +data = { +"data": PackedByteArray(255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 246, 255, 217, 255, 145, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 201, 255, 247, 255, 241, 255, 179, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 83, 255, 201, 255, 246, 255, 241, 255, 199, 255, 46, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 244, 255, 201, 255, 97, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 58, 255, 189, 255, 238, 255, 244, 255, 212, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 149, 255, 236, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 240, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 220, 255, 61, 255, 196, 255, 247, 255, 229, 255, 149, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 252, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 145, 255, 215, 255, 246, 255, 229, 255, 160, 255, 21, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 209, 255, 254, 255, 28, 255, 0, 255, 0, 255, 0, 255, 143, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 83, 255, 207, 255, 248, 255, 234, 255, 150, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 84, 255, 188, 255, 238, 255, 249, 255, 224, 255, 155, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 107, 255, 255, 255, 178, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 210, 255, 18, 255, 170, 255, 245, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 173, 255, 229, 255, 248, 255, 224, 255, 168, 255, 54, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 191, 255, 152, 255, 162, 255, 213, 255, 255, 255, 239, 255, 61, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 255, 255, 236, 255, 155, 255, 168, 255, 251, 255, 240, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 242, 255, 165, 255, 164, 255, 222, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 191, 255, 153, 255, 181, 255, 250, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 14, 255, 243, 255, 235, 255, 132, 255, 132, 255, 188, 255, 153, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 165, 255, 248, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 245, 255, 148, 255, 107, 255, 195, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 252, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 203, 255, 150, 255, 120, 255, 160, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 116, 255, 255, 255, 113, 255, 0, 255, 0, 255, 1, 255, 227, 255, 245, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 87, 255, 255, 255, 222, 255, 124, 255, 164, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 143, 255, 255, 255, 250, 255, 190, 255, 170, 255, 214, 255, 255, 255, 239, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 61, 255, 250, 255, 215, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 191, 255, 156, 255, 156, 255, 156, 255, 148, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 246, 255, 193, 255, 243, 255, 199, 255, 98, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 253, 255, 253, 255, 196, 255, 174, 255, 213, 255, 255, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 97, 255, 254, 255, 233, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 223, 255, 253, 255, 41, 255, 0, 255, 0, 255, 98, 255, 255, 255, 162, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 224, 255, 254, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 59, 255, 255, 255, 233, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 175, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 245, 255, 255, 255, 255, 255, 255, 255, 204, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 133, 255, 0, 255, 0, 255, 21, 255, 255, 255, 209, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 252, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 241, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 26, 255, 253, 255, 199, 255, 0, 255, 0, 255, 58, 255, 255, 255, 165, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 220, 255, 251, 255, 34, 255, 0, 255, 0, 255, 170, 255, 255, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 255, 255, 231, 255, 41, 255, 0, 255, 0, 255, 0, 255, 115, 255, 255, 255, 218, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 28, 255, 232, 255, 239, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 208, 255, 22, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 252, 255, 243, 255, 61, 255, 0, 255, 0, 255, 0, 255, 42, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 164, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 255, 255, 203, 255, 0, 255, 0, 255, 0, 255, 7, 255, 254, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 255, 255, 206, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 4, 255, 179, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 228, 255, 255, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 221, 255, 255, 255, 186, 255, 75, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 74, 255, 184, 255, 255, 255, 156, 255, 108, 255, 86, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 63, 255, 0, 255, 0, 255, 0, 255, 238, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 252, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 161, 255, 226, 255, 248, 255, 252, 255, 255, 255, 255, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 186, 255, 255, 255, 30, 255, 0, 255, 144, 255, 255, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 255, 255, 210, 255, 20, 255, 20, 255, 20, 255, 118, 255, 255, 255, 90, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 125, 255, 229, 255, 247, 255, 194, 255, 82, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 197, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 7, 255, 201, 255, 253, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 160, 255, 255, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 82, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 255, 255, 182, 255, 0, 255, 0, 255, 0, 255, 0, 255, 239, 255, 247, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 182, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 158, 255, 255, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 6, 255, 246, 255, 249, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 159, 255, 250, 255, 255, 255, 217, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 42, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 24, 255, 0, 255, 0, 255, 2, 255, 254, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 211, 255, 255, 255, 136, 255, 61, 255, 44, 255, 212, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 116, 255, 1, 255, 227, 255, 230, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 233, 255, 152, 255, 178, 255, 241, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 236, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 133, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 159, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 229, 255, 255, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 255, 255, 204, 255, 0, 255, 0, 255, 0, 255, 7, 255, 254, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 255, 255, 205, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 34, 255, 133, 255, 255, 255, 153, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 5, 255, 38, 255, 166, 255, 255, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 144, 255, 254, 255, 230, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 195, 255, 255, 255, 28, 255, 0, 255, 0, 255, 24, 255, 255, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 50, 255, 255, 255, 187, 255, 0, 255, 0, 255, 0, 255, 220, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 243, 255, 200, 255, 55, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 255, 255, 211, 255, 68, 255, 68, 255, 68, 255, 68, 255, 68, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 227, 255, 254, 255, 42, 255, 0, 255, 0, 255, 134, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 246, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 159, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 200, 255, 255, 255, 245, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 194, 255, 160, 255, 160, 255, 160, 255, 107, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 252, 255, 250, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 255, 255, 192, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 253, 255, 45, 255, 0, 255, 0, 255, 98, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 231, 255, 254, 255, 50, 255, 0, 255, 0, 255, 2, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 109, 255, 255, 255, 179, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 1, 255, 0, 255, 0, 255, 0, 255, 195, 255, 255, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 171, 255, 255, 255, 74, 255, 0, 255, 0, 255, 110, 255, 255, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 174, 255, 0, 255, 0, 255, 47, 255, 253, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 162, 255, 254, 255, 148, 255, 255, 255, 46, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 220, 255, 245, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 255, 255, 205, 255, 0, 255, 0, 255, 0, 255, 50, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 245, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 158, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 211, 255, 255, 255, 162, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 255, 255, 242, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 89, 255, 255, 255, 163, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 253, 255, 238, 255, 155, 255, 166, 255, 251, 255, 243, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 255, 255, 241, 255, 163, 255, 163, 255, 224, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 247, 255, 255, 255, 206, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 193, 255, 154, 255, 138, 255, 83, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 56, 255, 224, 255, 150, 255, 119, 255, 146, 255, 251, 255, 209, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 100, 255, 255, 255, 234, 255, 145, 255, 168, 255, 246, 255, 241, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 237, 255, 251, 255, 140, 255, 136, 255, 236, 255, 227, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 68, 255, 255, 255, 243, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 253, 255, 236, 255, 149, 255, 131, 255, 157, 255, 222, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 182, 255, 0, 255, 0, 255, 0, 255, 28, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 235, 255, 255, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 133, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 135, 255, 10, 255, 220, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 237, 255, 255, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 180, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 194, 255, 244, 255, 242, 255, 181, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 101, 255, 211, 255, 249, 255, 240, 255, 187, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 156, 255, 142, 255, 255, 255, 142, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 181, 255, 233, 255, 250, 255, 230, 255, 164, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 121, 255, 255, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 130, 255, 224, 255, 248, 255, 207, 255, 72, 255, 176, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 212, 255, 249, 255, 221, 255, 98, 255, 105, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 228, 255, 255, 255, 114, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 192, 255, 244, 255, 247, 255, 223, 255, 150, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 255, 255, 201, 255, 0, 255, 0, 255, 0, 255, 45, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 177, 255, 255, 255, 95, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 63, 255, 254, 255, 227, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 180, 255, 255, 255, 94, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 4, 255, 125, 255, 255, 255, 223, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 6, 255, 208, 255, 254, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 255, 255, 229, 255, 142, 255, 148, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 230, 255, 251, 255, 33, 255, 0, 255, 0, 255, 119, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 71, 255, 255, 255, 229, 255, 38, 255, 0, 255, 0, 255, 0, 255, 111, 255, 255, 255, 218, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 149, 255, 255, 255, 153, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 78, 255, 255, 255, 229, 255, 40, 255, 0, 255, 0, 255, 0, 255, 4, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 193, 255, 156, 255, 172, 255, 229, 255, 255, 255, 231, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 43, 255, 247, 255, 232, 255, 22, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 133, 255, 233, 255, 246, 255, 181, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 229, 255, 147, 255, 169, 255, 232, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 143, 255, 255, 255, 248, 255, 185, 255, 166, 255, 211, 255, 255, 255, 239, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 12, 255, 224, 255, 254, 255, 65, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 250, 255, 187, 255, 166, 255, 190, 255, 242, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 242, 255, 205, 255, 130, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 0, 255, 110, 255, 255, 255, 182, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 131, 255, 232, 255, 247, 255, 189, 255, 38, 255, 230, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 189, 255, 239, 255, 250, 255, 225, 255, 155, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 69, 255, 255, 255, 221, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 97, 255, 198, 255, 243, 255, 248, 255, 227, 255, 172, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 220, 255, 66, 255, 204, 255, 249, 255, 231, 255, 138, 255, 21, 255, 163, 255, 239, 255, 239, 255, 181, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 255, 255, 190, 255, 0, 255, 0, 255, 11, 255, 225, 255, 248, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 236, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 244, 255, 244, 255, 244, 255, 244, 255, 244, 255, 244, 255, 221, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 91, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 182, 255, 255, 255, 39, 255, 0, 255, 0, 255, 152, 255, 255, 255, 177, 255, 0, 255, 0, 255, 18, 255, 254, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 235, 255, 209, 255, 0, 255, 215, 255, 230, 255, 0, 255, 0, 255, 0, 255, 0, 255, 66, 255, 152, 255, 152, 255, 152, 255, 87, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 20, 255, 0, 255, 0, 255, 0, 255, 8, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 240, 255, 63, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 123, 255, 255, 255, 50, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 107, 255, 108, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 235, 255, 209, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 184, 255, 243, 255, 243, 255, 178, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 101, 255, 149, 255, 235, 255, 247, 255, 199, 255, 51, 255, 86, 255, 212, 255, 248, 255, 220, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 120, 255, 218, 255, 249, 255, 232, 255, 152, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 82, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 19, 255, 251, 255, 223, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 165, 255, 231, 255, 248, 255, 223, 255, 158, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 242, 255, 138, 255, 113, 255, 230, 255, 255, 255, 236, 255, 192, 255, 109, 255, 171, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 95, 255, 0, 255, 141, 255, 255, 255, 122, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 227, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 228, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 113, 255, 255, 255, 103, 255, 0, 255, 0, 255, 222, 255, 246, 255, 241, 255, 4, 255, 0, 255, 81, 255, 255, 255, 127, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 112, 255, 112, 255, 112, 255, 153, 255, 255, 255, 206, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 216, 255, 190, 255, 0, 255, 195, 255, 211, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 255, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 203, 255, 255, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 183, 255, 208, 255, 18, 255, 0, 255, 8, 255, 185, 255, 216, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 95, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 174, 255, 255, 255, 255, 255, 179, 255, 0, 255, 0, 255, 0, 255, 0, 255, 216, 255, 190, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 242, 255, 245, 255, 137, 255, 138, 255, 246, 255, 224, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 248, 255, 200, 255, 110, 255, 164, 255, 255, 255, 239, 255, 243, 255, 132, 255, 115, 255, 235, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 151, 255, 255, 255, 215, 255, 149, 255, 191, 255, 255, 255, 206, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 237, 255, 236, 255, 4, 255, 0, 255, 0, 255, 101, 255, 255, 255, 131, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 193, 255, 253, 255, 149, 255, 125, 255, 169, 255, 207, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 127, 255, 0, 255, 0, 255, 100, 255, 255, 255, 229, 255, 5, 255, 0, 255, 4, 255, 234, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 237, 255, 235, 255, 69, 255, 252, 255, 205, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 91, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 173, 255, 235, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 167, 255, 0, 255, 37, 255, 255, 255, 151, 255, 255, 255, 58, 255, 0, 255, 146, 255, 255, 255, 58, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 205, 255, 249, 255, 46, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 197, 255, 170, 255, 0, 255, 175, 255, 192, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 244, 255, 205, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 45, 255, 236, 255, 205, 255, 24, 255, 182, 255, 246, 255, 64, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 28, 255, 28, 255, 60, 255, 255, 255, 88, 255, 28, 255, 28, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 159, 255, 84, 255, 82, 255, 251, 255, 31, 255, 102, 255, 171, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 237, 255, 255, 255, 255, 255, 245, 255, 0, 255, 0, 255, 0, 255, 0, 255, 197, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 80, 255, 80, 255, 80, 255, 80, 255, 80, 255, 80, 255, 80, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 255, 255, 94, 255, 0, 255, 0, 255, 106, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 242, 255, 12, 255, 0, 255, 1, 255, 227, 255, 255, 255, 106, 255, 0, 255, 0, 255, 110, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 254, 255, 220, 255, 10, 255, 0, 255, 0, 255, 162, 255, 255, 255, 98, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 151, 255, 255, 255, 71, 255, 0, 255, 0, 255, 186, 255, 255, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 61, 255, 0, 255, 0, 255, 66, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 202, 255, 255, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 252, 255, 250, 255, 46, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 230, 255, 230, 255, 0, 255, 108, 255, 255, 255, 39, 255, 253, 255, 127, 255, 0, 255, 211, 255, 240, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 129, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 150, 255, 0, 255, 155, 255, 173, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 255, 255, 111, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 49, 255, 238, 255, 245, 255, 248, 255, 70, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 64, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 84, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 255, 23, 255, 0, 255, 0, 255, 0, 255, 0, 255, 218, 255, 255, 255, 255, 255, 223, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 150, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 221, 255, 255, 255, 34, 255, 20, 255, 20, 255, 59, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 189, 255, 0, 255, 0, 255, 0, 255, 194, 255, 255, 255, 42, 255, 0, 255, 0, 255, 74, 255, 255, 255, 139, 255, 0, 255, 0, 255, 0, 255, 0, 255, 94, 255, 255, 255, 139, 255, 0, 255, 0, 255, 0, 255, 69, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 58, 255, 255, 255, 158, 255, 0, 255, 20, 255, 251, 255, 199, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 164, 255, 255, 255, 215, 255, 101, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 42, 255, 0, 255, 0, 255, 64, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 200, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 234, 255, 255, 255, 187, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 162, 255, 255, 255, 38, 255, 179, 255, 216, 255, 0, 255, 205, 255, 195, 255, 19, 255, 254, 255, 175, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 251, 255, 197, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 30, 255, 0, 255, 31, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 99, 255, 248, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 185, 255, 255, 255, 209, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 19, 255, 76, 255, 76, 255, 101, 255, 255, 255, 123, 255, 76, 255, 76, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 31, 255, 229, 255, 251, 255, 177, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 79, 255, 231, 255, 232, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 192, 255, 255, 255, 24, 255, 0, 255, 0, 255, 72, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 110, 255, 255, 255, 118, 255, 0, 255, 0, 255, 0, 255, 47, 255, 255, 255, 183, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 219, 255, 238, 255, 5, 255, 101, 255, 255, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 126, 255, 237, 255, 255, 255, 239, 255, 95, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 64, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 200, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 125, 255, 255, 255, 233, 255, 255, 255, 73, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 95, 255, 242, 255, 147, 255, 0, 255, 136, 255, 251, 255, 86, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 213, 255, 244, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 165, 255, 250, 255, 126, 255, 244, 255, 190, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 153, 255, 246, 255, 101, 255, 255, 255, 87, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 76, 255, 76, 255, 76, 255, 76, 255, 76, 255, 76, 255, 76, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 222, 255, 253, 255, 72, 255, 68, 255, 68, 255, 68, 255, 68, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 192, 255, 255, 255, 24, 255, 0, 255, 0, 255, 72, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 89, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 69, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 127, 255, 255, 255, 72, 255, 183, 255, 249, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 10, 255, 107, 255, 242, 255, 253, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 64, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 200, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 249, 255, 213, 255, 32, 255, 241, 255, 227, 255, 15, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 91, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 255, 255, 179, 255, 255, 255, 76, 255, 0, 255, 68, 255, 255, 255, 182, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 141, 255, 255, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 153, 255, 252, 255, 85, 255, 0, 255, 63, 255, 245, 255, 182, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 251, 255, 154, 255, 1, 255, 213, 255, 226, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 85, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 192, 255, 255, 255, 24, 255, 0, 255, 0, 255, 72, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 252, 255, 224, 255, 11, 255, 0, 255, 0, 255, 162, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 255, 255, 154, 255, 248, 255, 174, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 0, 255, 0, 255, 0, 255, 131, 255, 255, 255, 81, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 64, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 200, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 203, 255, 254, 255, 59, 255, 0, 255, 106, 255, 255, 255, 157, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 228, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 250, 255, 249, 255, 12, 255, 0, 255, 8, 255, 246, 255, 250, 255, 223, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 253, 255, 237, 255, 112, 255, 112, 255, 112, 255, 112, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 91, 255, 0, 255, 0, 255, 0, 255, 65, 255, 111, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 39, 255, 33, 255, 0, 255, 52, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 32, 255, 237, 255, 250, 255, 165, 255, 130, 255, 148, 255, 203, 255, 66, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 192, 255, 255, 255, 24, 255, 0, 255, 0, 255, 72, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 134, 255, 255, 255, 217, 255, 148, 255, 189, 255, 255, 255, 211, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 243, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 232, 255, 164, 255, 124, 255, 130, 255, 232, 255, 244, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 64, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 200, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 152, 255, 0, 255, 0, 255, 2, 255, 198, 255, 255, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 173, 255, 235, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 142, 255, 255, 255, 191, 255, 0, 255, 0, 255, 0, 255, 186, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 169, 255, 236, 255, 250, 255, 232, 255, 172, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 192, 255, 255, 255, 24, 255, 0, 255, 0, 255, 72, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 107, 255, 213, 255, 248, 255, 232, 255, 155, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 103, 255, 255, 255, 236, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 155, 255, 225, 255, 248, 255, 237, 255, 189, 255, 61, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 63, 255, 165, 255, 220, 255, 247, 255, 231, 255, 184, 255, 83, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 232, 255, 54, 255, 199, 255, 248, 255, 229, 255, 122, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 222, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 99, 255, 196, 255, 240, 255, 251, 255, 152, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 214, 255, 253, 255, 22, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 249, 255, 225, 255, 163, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 124, 255, 0, 255, 0, 255, 0, 255, 0, 255, 207, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 147, 255, 255, 255, 101, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 202, 255, 234, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 156, 255, 228, 255, 254, 255, 255, 255, 255, 255, 255, 255, 156, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 90, 255, 215, 255, 248, 255, 232, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 116, 255, 214, 255, 246, 255, 231, 255, 188, 255, 95, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 122, 255, 218, 255, 247, 255, 224, 255, 142, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 39, 255, 153, 255, 220, 255, 247, 255, 240, 255, 210, 255, 140, 255, 21, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 167, 255, 221, 255, 247, 255, 220, 255, 122, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 154, 255, 253, 255, 180, 255, 104, 255, 76, 255, 93, 255, 167, 255, 252, 255, 167, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 193, 255, 156, 255, 156, 255, 156, 255, 151, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 237, 255, 136, 255, 113, 255, 215, 255, 255, 255, 102, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 242, 255, 255, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 168, 255, 255, 255, 227, 255, 156, 255, 146, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 129, 255, 255, 255, 102, 255, 0, 255, 0, 255, 0, 255, 0, 255, 119, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 191, 255, 152, 255, 163, 255, 217, 255, 255, 255, 233, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 168, 255, 168, 255, 168, 255, 168, 255, 168, 255, 217, 255, 255, 255, 98, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 255, 255, 132, 255, 0, 255, 0, 255, 1, 255, 229, 255, 248, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 255, 255, 147, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 186, 255, 251, 255, 105, 255, 67, 255, 201, 255, 255, 255, 139, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 251, 255, 242, 255, 148, 255, 160, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 154, 255, 255, 255, 226, 255, 172, 255, 193, 255, 246, 255, 161, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 141, 255, 255, 255, 193, 255, 125, 255, 180, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 87, 255, 248, 255, 255, 255, 220, 255, 172, 255, 183, 255, 226, 255, 237, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 125, 255, 164, 255, 164, 255, 201, 255, 255, 255, 205, 255, 164, 255, 164, 255, 133, 255, 0, 255, 0, 255, 0, 255, 0, 255, 153, 255, 244, 255, 184, 255, 157, 255, 218, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 234, 255, 61, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 248, 255, 127, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 115, 255, 0, 255, 0, 255, 31, 255, 252, 255, 219, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 106, 255, 253, 255, 199, 255, 195, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 96, 255, 255, 255, 172, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 184, 255, 0, 255, 0, 255, 0, 255, 0, 255, 201, 255, 255, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 3, 255, 201, 255, 255, 255, 77, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 216, 255, 240, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 18, 255, 248, 255, 220, 255, 0, 255, 0, 255, 59, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 255, 255, 180, 255, 0, 255, 0, 255, 68, 255, 255, 255, 129, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 249, 255, 233, 255, 12, 255, 0, 255, 0, 255, 12, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 226, 255, 231, 255, 5, 255, 0, 255, 0, 255, 205, 255, 250, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 248, 255, 251, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 15, 255, 0, 255, 0, 255, 14, 255, 248, 255, 201, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 254, 255, 70, 255, 0, 255, 96, 255, 217, 255, 249, 255, 234, 255, 188, 255, 17, 255, 123, 255, 243, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 210, 255, 255, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 169, 255, 9, 255, 185, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 203, 255, 246, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 215, 255, 250, 255, 16, 255, 0, 255, 0, 255, 27, 255, 254, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 162, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 74, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 168, 255, 255, 255, 53, 255, 0, 255, 143, 255, 255, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 218, 255, 221, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 32, 255, 255, 255, 168, 255, 0, 255, 0, 255, 56, 255, 255, 255, 137, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 68, 255, 188, 255, 246, 255, 228, 255, 147, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 233, 255, 255, 255, 255, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 254, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 215, 255, 239, 255, 10, 255, 0, 255, 1, 255, 212, 255, 241, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 74, 255, 192, 255, 247, 255, 229, 255, 122, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 160, 255, 255, 255, 133, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 249, 255, 193, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 171, 255, 194, 255, 0, 255, 80, 255, 255, 255, 148, 255, 64, 255, 147, 255, 255, 255, 19, 255, 25, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 194, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 254, 255, 184, 255, 0, 255, 14, 255, 21, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 130, 255, 255, 255, 92, 255, 0, 255, 0, 255, 108, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 8, 255, 64, 255, 238, 255, 234, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 186, 255, 254, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 255, 255, 141, 255, 1, 255, 226, 255, 236, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 54, 255, 255, 255, 131, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 218, 255, 240, 255, 51, 255, 14, 255, 162, 255, 255, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 235, 255, 188, 255, 147, 255, 222, 255, 255, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 151, 255, 255, 255, 188, 255, 108, 255, 70, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 195, 255, 255, 255, 150, 255, 15, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 99, 255, 255, 255, 190, 255, 58, 255, 164, 255, 255, 255, 111, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 239, 255, 176, 255, 152, 255, 234, 255, 255, 255, 102, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 229, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 177, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 241, 255, 117, 255, 0, 255, 205, 255, 193, 255, 0, 255, 0, 255, 110, 255, 255, 255, 8, 255, 0, 255, 240, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 66, 255, 0, 255, 0, 255, 0, 255, 219, 255, 255, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 49, 255, 255, 255, 154, 255, 168, 255, 253, 255, 255, 255, 225, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 45, 255, 255, 255, 174, 255, 0, 255, 0, 255, 190, 255, 255, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 255, 255, 184, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 224, 255, 221, 255, 54, 255, 255, 255, 150, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 145, 255, 255, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 236, 255, 255, 255, 255, 255, 242, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 155, 255, 0, 255, 0, 255, 33, 255, 255, 255, 209, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 38, 255, 223, 255, 255, 255, 243, 255, 142, 255, 23, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 255, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 138, 255, 0, 255, 0, 255, 44, 255, 254, 255, 219, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 254, 255, 241, 255, 0, 255, 0, 255, 0, 255, 133, 255, 164, 255, 164, 255, 164, 255, 64, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 196, 255, 253, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 255, 255, 86, 255, 2, 255, 248, 255, 130, 255, 0, 255, 0, 255, 125, 255, 253, 255, 0, 255, 0, 255, 238, 255, 113, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 191, 255, 152, 255, 152, 255, 152, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 149, 255, 0, 255, 0, 255, 55, 255, 255, 255, 215, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 63, 255, 255, 255, 247, 255, 185, 255, 101, 255, 123, 255, 243, 255, 243, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 216, 255, 245, 255, 10, 255, 19, 255, 252, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 183, 255, 140, 255, 147, 255, 192, 255, 255, 255, 202, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 154, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 156, 255, 255, 255, 57, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 232, 255, 206, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 123, 255, 236, 255, 51, 255, 34, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 67, 255, 0, 255, 0, 255, 0, 255, 240, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 10, 255, 120, 255, 232, 255, 255, 255, 238, 255, 59, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 57, 255, 231, 255, 239, 255, 167, 255, 248, 255, 236, 255, 69, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 62, 255, 0, 255, 0, 255, 0, 255, 214, 255, 255, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 238, 255, 0, 255, 0, 255, 0, 255, 208, 255, 255, 255, 255, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 136, 255, 254, 255, 83, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 255, 255, 78, 255, 1, 255, 246, 255, 131, 255, 0, 255, 0, 255, 165, 255, 246, 255, 0, 255, 20, 255, 254, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 245, 255, 180, 255, 153, 255, 237, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 55, 255, 255, 255, 193, 255, 1, 255, 0, 255, 0, 255, 122, 255, 255, 255, 97, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 131, 255, 255, 255, 82, 255, 97, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 138, 255, 255, 255, 130, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 18, 255, 246, 255, 222, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 31, 255, 254, 255, 251, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 71, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 161, 255, 249, 255, 165, 255, 152, 255, 149, 255, 122, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 133, 255, 255, 255, 219, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 10, 255, 234, 255, 228, 255, 30, 255, 0, 255, 38, 255, 224, 255, 246, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 194, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 235, 255, 254, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 116, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 193, 255, 205, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 251, 255, 110, 255, 0, 255, 186, 255, 216, 255, 30, 255, 59, 255, 243, 255, 255, 255, 47, 255, 136, 255, 233, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 78, 255, 198, 255, 248, 255, 227, 255, 117, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 171, 255, 0, 255, 0, 255, 0, 255, 90, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 255, 255, 157, 255, 172, 255, 255, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 79, 255, 255, 255, 171, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 121, 255, 255, 255, 117, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 187, 255, 255, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 162, 255, 253, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 115, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 65, 255, 255, 255, 131, 255, 0, 255, 0, 255, 0, 255, 100, 255, 255, 255, 101, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 64, 255, 0, 255, 0, 255, 0, 255, 216, 255, 255, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 174, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 116, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 45, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 195, 255, 187, 255, 0, 255, 41, 255, 222, 255, 255, 255, 250, 255, 107, 255, 174, 255, 255, 255, 241, 255, 73, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 205, 255, 242, 255, 30, 255, 0, 255, 0, 255, 159, 255, 255, 255, 82, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 217, 255, 220, 255, 229, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 145, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 227, 255, 246, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 182, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 243, 255, 190, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 130, 255, 252, 255, 79, 255, 5, 255, 0, 255, 10, 255, 117, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 41, 255, 0, 255, 0, 255, 0, 255, 15, 255, 234, 255, 245, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 61, 255, 255, 255, 163, 255, 0, 255, 0, 255, 0, 255, 130, 255, 255, 255, 91, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 146, 255, 0, 255, 0, 255, 47, 255, 255, 255, 215, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 255, 255, 236, 255, 52, 255, 0, 255, 0, 255, 0, 255, 116, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 84, 255, 255, 255, 90, 255, 0, 255, 3, 255, 38, 255, 18, 255, 0, 255, 1, 255, 40, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 196, 255, 160, 255, 160, 255, 160, 255, 155, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 251, 255, 233, 255, 155, 255, 186, 255, 255, 255, 213, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 193, 255, 156, 255, 161, 255, 206, 255, 255, 255, 244, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 89, 255, 255, 255, 157, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 253, 255, 188, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 255, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 226, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 198, 255, 164, 255, 164, 255, 164, 255, 164, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 56, 255, 255, 255, 215, 255, 175, 255, 167, 255, 230, 255, 255, 255, 134, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 215, 255, 255, 255, 170, 255, 120, 255, 157, 255, 251, 255, 226, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 243, 255, 180, 255, 152, 255, 234, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 135, 255, 255, 255, 253, 255, 193, 255, 162, 255, 184, 255, 231, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 253, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 149, 255, 253, 255, 150, 255, 57, 255, 20, 255, 24, 255, 51, 255, 109, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 199, 255, 245, 255, 225, 255, 154, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 255, 255, 255, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 253, 255, 227, 255, 170, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 200, 255, 255, 255, 49, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 99, 255, 148, 255, 235, 255, 249, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 179, 255, 248, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 137, 255, 255, 255, 156, 255, 85, 255, 89, 255, 134, 255, 239, 255, 226, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 160, 255, 222, 255, 245, 255, 239, 255, 201, 255, 94, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 148, 255, 222, 255, 247, 255, 225, 255, 157, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 212, 255, 51, 255, 198, 255, 248, 255, 228, 255, 118, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 79, 255, 186, 255, 238, 255, 251, 255, 236, 255, 210, 255, 152, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 208, 255, 220, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 94, 255, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 255, 91, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 150, 255, 247, 255, 208, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 133, 255, 219, 255, 247, 255, 247, 255, 216, 255, 143, 255, 23, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 51, 255, 48, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 245, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 227, 255, 255, 255, 124, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 243, 255, 201, 255, 101, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 96, 255, 214, 255, 248, 255, 220, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 90, 255, 215, 255, 249, 255, 250, 255, 91, 255, 197, 255, 214, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 90, 255, 215, 255, 249, 255, 250, 255, 91, 255, 0, 255, 127, 255, 226, 255, 251, 255, 249, 255, 61, 255, 228, 255, 171, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 190, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 1, 255, 208, 255, 255, 255, 54, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 26, 255, 148, 255, 225, 255, 248, 255, 217, 255, 118, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 74, 255, 181, 255, 237, 255, 247, 255, 218, 255, 129, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 200, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 220, 255, 235, 255, 131, 255, 0, 255, 0, 255, 0, 255, 13, 255, 234, 255, 139, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 201, 255, 255, 255, 29, 255, 0, 255, 0, 255, 0, 255, 134, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 4, 255, 245, 255, 231, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 255, 255, 51, 255, 0, 255, 213, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 175, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 65, 255, 255, 255, 249, 255, 215, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 163, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 226, 255, 255, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 193, 255, 158, 255, 185, 255, 251, 255, 255, 255, 121, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 63, 255, 177, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 86, 255, 255, 255, 230, 255, 157, 255, 219, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 251, 255, 242, 255, 148, 255, 158, 255, 22, 255, 214, 255, 230, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 251, 255, 242, 255, 148, 255, 158, 255, 22, 255, 75, 255, 255, 255, 225, 255, 143, 255, 151, 255, 20, 255, 242, 255, 188, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 201, 255, 0, 255, 0, 255, 0, 255, 83, 255, 255, 255, 177, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 14, 255, 232, 255, 255, 255, 205, 255, 167, 255, 227, 255, 255, 255, 133, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 242, 255, 239, 255, 177, 255, 158, 255, 223, 255, 255, 255, 156, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 111, 255, 255, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 238, 255, 186, 255, 131, 255, 255, 255, 71, 255, 0, 255, 0, 255, 127, 255, 241, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 137, 255, 255, 255, 89, 255, 0, 255, 0, 255, 0, 255, 202, 255, 255, 255, 223, 255, 0, 255, 0, 255, 0, 255, 54, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 254, 255, 11, 255, 3, 255, 249, 255, 94, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 225, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 252, 255, 144, 255, 255, 255, 50, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 202, 255, 241, 255, 7, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 223, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 57, 255, 255, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 214, 255, 254, 255, 171, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 251, 255, 35, 255, 0, 255, 18, 255, 237, 255, 231, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 4, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 122, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 7, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 184, 255, 255, 255, 76, 255, 0, 255, 1, 255, 210, 255, 254, 255, 46, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 100, 255, 63, 255, 0, 255, 0, 255, 20, 255, 243, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 55, 255, 12, 255, 0, 255, 0, 255, 16, 255, 244, 255, 241, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 31, 255, 244, 255, 207, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 71, 255, 0, 255, 235, 255, 148, 255, 0, 255, 19, 255, 241, 255, 125, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 255, 255, 149, 255, 0, 255, 0, 255, 16, 255, 252, 255, 233, 255, 255, 255, 36, 255, 0, 255, 0, 255, 113, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 134, 255, 225, 255, 0, 255, 38, 255, 255, 255, 53, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 255, 255, 220, 255, 8, 255, 0, 255, 0, 255, 176, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 240, 255, 199, 255, 48, 255, 255, 255, 141, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 129, 255, 255, 255, 77, 255, 0, 255, 0, 255, 0, 255, 147, 255, 253, 255, 146, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 229, 255, 255, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 83, 255, 205, 255, 253, 255, 165, 255, 38, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 255, 255, 195, 255, 0, 255, 0, 255, 0, 255, 162, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 233, 255, 255, 255, 255, 255, 255, 255, 168, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 233, 255, 255, 255, 255, 255, 255, 255, 168, 255, 149, 255, 245, 255, 255, 255, 255, 255, 255, 255, 116, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 255, 255, 205, 255, 0, 255, 87, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 217, 255, 255, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 236, 255, 230, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 184, 255, 219, 255, 119, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 81, 255, 255, 255, 51, 255, 0, 255, 212, 255, 172, 255, 0, 255, 141, 255, 234, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 251, 255, 209, 255, 0, 255, 0, 255, 82, 255, 255, 255, 138, 255, 255, 255, 106, 255, 0, 255, 0, 255, 173, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 20, 255, 179, 255, 191, 255, 20, 255, 91, 255, 255, 255, 33, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 44, 255, 171, 255, 255, 255, 127, 255, 0, 255, 0, 255, 176, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 83, 255, 255, 255, 119, 255, 0, 255, 220, 255, 230, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 59, 255, 248, 255, 162, 255, 0, 255, 0, 255, 2, 255, 231, 255, 188, 255, 128, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 5, 255, 244, 255, 246, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 195, 255, 252, 255, 160, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 157, 255, 0, 255, 0, 255, 0, 255, 122, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 151, 255, 255, 255, 188, 255, 108, 255, 70, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 151, 255, 255, 255, 188, 255, 108, 255, 70, 255, 99, 255, 182, 255, 255, 255, 158, 255, 108, 255, 48, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 255, 255, 82, 255, 214, 255, 252, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 251, 255, 211, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 32, 255, 149, 255, 255, 255, 109, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 67, 255, 118, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 64, 255, 255, 255, 62, 255, 0, 255, 226, 255, 156, 255, 28, 255, 247, 255, 111, 255, 0, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 201, 255, 253, 255, 15, 255, 0, 255, 150, 255, 255, 255, 32, 255, 248, 255, 175, 255, 0, 255, 0, 255, 231, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 50, 255, 30, 255, 246, 255, 247, 255, 34, 255, 0, 255, 176, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 175, 255, 255, 255, 35, 255, 0, 255, 135, 255, 255, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 49, 255, 179, 255, 240, 255, 6, 255, 0, 255, 66, 255, 255, 255, 98, 255, 134, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 1, 255, 28, 255, 155, 255, 255, 255, 156, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 89, 255, 228, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 255, 255, 143, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 109, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 254, 255, 242, 255, 255, 255, 159, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 162, 255, 255, 255, 97, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 148, 255, 255, 255, 255, 255, 237, 255, 91, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 236, 255, 158, 255, 0, 255, 120, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 17, 255, 246, 255, 144, 255, 68, 255, 255, 255, 103, 255, 155, 255, 225, 255, 30, 255, 194, 255, 250, 255, 212, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 136, 255, 255, 255, 73, 255, 0, 255, 218, 255, 213, 255, 0, 255, 191, 255, 240, 255, 3, 255, 36, 255, 255, 255, 169, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 68, 255, 81, 255, 255, 255, 125, 255, 68, 255, 207, 255, 187, 255, 68, 255, 64, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 126, 255, 255, 255, 180, 255, 0, 255, 174, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 249, 255, 206, 255, 0, 255, 0, 255, 50, 255, 255, 255, 158, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 51, 255, 94, 255, 255, 255, 76, 255, 0, 255, 153, 255, 248, 255, 15, 255, 136, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 26, 255, 129, 255, 231, 255, 251, 255, 166, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 255, 255, 142, 255, 0, 255, 0, 255, 0, 255, 107, 255, 255, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 171, 255, 255, 255, 250, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 111, 255, 255, 255, 175, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 78, 255, 139, 255, 161, 255, 231, 255, 253, 255, 125, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 198, 255, 164, 255, 164, 255, 164, 255, 164, 255, 197, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 167, 255, 232, 255, 17, 255, 0, 255, 120, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 255, 255, 199, 255, 48, 255, 251, 255, 97, 255, 145, 255, 226, 255, 12, 255, 181, 255, 194, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 255, 255, 133, 255, 29, 255, 255, 255, 145, 255, 0, 255, 121, 255, 255, 255, 57, 255, 95, 255, 255, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 20, 255, 90, 255, 254, 255, 39, 255, 24, 255, 244, 255, 118, 255, 20, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 8, 255, 223, 255, 255, 255, 78, 255, 168, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 15, 255, 249, 255, 161, 255, 4, 255, 236, 255, 174, 255, 0, 255, 136, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 188, 255, 148, 255, 218, 255, 250, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 169, 255, 251, 255, 241, 255, 140, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 156, 255, 0, 255, 0, 255, 0, 255, 122, 255, 255, 255, 94, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 150, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 118, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 62, 255, 255, 255, 179, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 254, 255, 194, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 215, 255, 255, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 255, 255, 86, 255, 0, 255, 0, 255, 120, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 26, 255, 44, 255, 3, 255, 169, 255, 215, 255, 3, 255, 207, 255, 172, 255, 0, 255, 110, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 252, 255, 189, 255, 93, 255, 255, 255, 77, 255, 0, 255, 52, 255, 255, 255, 122, 255, 153, 255, 255, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 0, 255, 82, 255, 255, 255, 223, 255, 167, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 193, 255, 255, 255, 167, 255, 164, 255, 164, 255, 164, 255, 208, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 181, 255, 240, 255, 79, 255, 255, 255, 83, 255, 0, 255, 136, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 56, 255, 254, 255, 199, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 64, 255, 225, 255, 115, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 19, 255, 255, 255, 193, 255, 0, 255, 0, 255, 0, 255, 159, 255, 255, 255, 57, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 142, 255, 255, 255, 95, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 81, 255, 251, 255, 198, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 161, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 49, 255, 254, 255, 83, 255, 0, 255, 225, 255, 163, 255, 0, 255, 100, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 202, 255, 240, 255, 147, 255, 251, 255, 13, 255, 0, 255, 2, 255, 236, 255, 176, 255, 209, 255, 233, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 68, 255, 205, 255, 191, 255, 68, 255, 144, 255, 251, 255, 69, 255, 68, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 187, 255, 255, 255, 247, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 254, 255, 206, 255, 0, 255, 0, 255, 0, 255, 0, 255, 65, 255, 255, 255, 175, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 96, 255, 255, 255, 223, 255, 241, 255, 8, 255, 0, 255, 136, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 152, 255, 255, 255, 113, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 202, 255, 250, 255, 32, 255, 0, 255, 15, 255, 234, 255, 238, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 65, 255, 255, 255, 211, 255, 15, 255, 0, 255, 0, 255, 30, 255, 236, 255, 252, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 249, 255, 200, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 12, 255, 0, 255, 0, 255, 0, 255, 11, 255, 221, 255, 255, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 99, 255, 144, 255, 144, 255, 144, 255, 144, 255, 196, 255, 255, 255, 179, 255, 123, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 183, 255, 204, 255, 1, 255, 0, 255, 203, 255, 184, 255, 0, 255, 126, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 139, 255, 255, 255, 217, 255, 197, 255, 0, 255, 0, 255, 0, 255, 169, 255, 224, 255, 248, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 222, 255, 130, 255, 0, 255, 141, 255, 214, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 42, 255, 251, 255, 255, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 119, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 231, 255, 249, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 17, 255, 250, 255, 255, 255, 159, 255, 0, 255, 0, 255, 136, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 16, 255, 233, 255, 245, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 254, 255, 228, 255, 152, 255, 216, 255, 255, 255, 118, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 175, 255, 255, 255, 234, 255, 176, 255, 181, 255, 243, 255, 255, 255, 125, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 247, 255, 255, 255, 190, 255, 176, 255, 176, 255, 176, 255, 176, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 84, 255, 244, 255, 179, 255, 146, 255, 155, 255, 227, 255, 255, 255, 179, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 61, 255, 255, 255, 69, 255, 0, 255, 0, 255, 131, 255, 246, 255, 101, 255, 222, 255, 194, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 255, 255, 255, 255, 129, 255, 0, 255, 0, 255, 0, 255, 100, 255, 255, 255, 255, 255, 107, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 253, 255, 87, 255, 0, 255, 184, 255, 171, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 143, 255, 255, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 210, 255, 255, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 147, 255, 255, 255, 102, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 0, 255, 182, 255, 255, 255, 69, 255, 0, 255, 0, 255, 136, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 190, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 86, 255, 212, 255, 249, 255, 224, 255, 119, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 120, 255, 213, 255, 249, 255, 241, 255, 195, 255, 86, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 165, 255, 224, 255, 247, 255, 237, 255, 203, 255, 107, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 191, 255, 0, 255, 0, 255, 0, 255, 13, 255, 172, 255, 242, 255, 202, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 252, 255, 255, 255, 61, 255, 0, 255, 0, 255, 0, 255, 31, 255, 255, 255, 255, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 45, 255, 0, 255, 227, 255, 129, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 57, 255, 254, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 84, 255, 188, 255, 238, 255, 249, 255, 224, 255, 155, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 134, 255, 227, 255, 248, 255, 210, 255, 93, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 255, 255, 255, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 255, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 185, 255, 240, 255, 233, 255, 156, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 90, 255, 215, 255, 248, 255, 232, 255, 76, 255, 0, 255, 127, 255, 226, 255, 249, 255, 223, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 106, 255, 255, 255, 166, 255, 0, 255, 0, 255, 0, 255, 0, 255, 167, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 84, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 123, 255, 228, 255, 247, 255, 191, 255, 43, 255, 240, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 130, 255, 211, 255, 241, 255, 222, 255, 161, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 90, 255, 215, 255, 248, 255, 232, 255, 76, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 179, 255, 248, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 254, 255, 193, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 234, 255, 231, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 182, 255, 234, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 14, 255, 235, 255, 182, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 163, 255, 243, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 143, 255, 255, 255, 250, 255, 190, 255, 170, 255, 214, 255, 255, 255, 239, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 133, 255, 255, 255, 187, 255, 172, 255, 172, 255, 172, 255, 91, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 149, 255, 255, 255, 210, 255, 155, 255, 223, 255, 255, 255, 102, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 158, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 239, 255, 104, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 61, 255, 104, 255, 194, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 226, 255, 247, 255, 148, 255, 180, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 251, 255, 242, 255, 148, 255, 160, 255, 26, 255, 75, 255, 255, 255, 225, 255, 144, 255, 156, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 202, 255, 255, 255, 60, 255, 0, 255, 0, 255, 60, 255, 255, 255, 186, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 164, 255, 164, 255, 164, 255, 164, 255, 164, 255, 240, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 106, 255, 255, 255, 233, 255, 152, 255, 179, 255, 237, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 58, 255, 227, 255, 139, 255, 41, 255, 7, 255, 25, 255, 102, 255, 222, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 251, 255, 242, 255, 148, 255, 160, 255, 26, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 255, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 238, 255, 152, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 201, 255, 200, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 231, 255, 255, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 255, 255, 130, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 255, 255, 231, 255, 41, 255, 0, 255, 0, 255, 0, 255, 115, 255, 255, 255, 218, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 153, 255, 255, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 253, 255, 210, 255, 5, 255, 0, 255, 15, 255, 224, 255, 237, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 153, 255, 250, 255, 227, 255, 57, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 255, 255, 153, 255, 0, 255, 2, 255, 241, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 122, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 50, 255, 252, 255, 206, 255, 2, 255, 2, 255, 206, 255, 248, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 255, 255, 199, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 226, 255, 254, 255, 42, 255, 0, 255, 0, 255, 136, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 229, 255, 62, 255, 24, 255, 174, 255, 242, 255, 244, 255, 174, 255, 22, 255, 208, 255, 89, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 243, 255, 190, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 32, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 55, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 90, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 207, 255, 233, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 215, 255, 225, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 197, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 66, 255, 255, 255, 137, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 65, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 147, 255, 249, 255, 219, 255, 100, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 254, 255, 192, 255, 0, 255, 45, 255, 254, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 233, 255, 255, 255, 255, 255, 255, 255, 168, 255, 149, 255, 245, 255, 255, 255, 255, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 146, 255, 255, 255, 101, 255, 102, 255, 255, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 10, 255, 221, 255, 250, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 205, 255, 0, 255, 0, 255, 0, 255, 51, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 161, 255, 116, 255, 0, 255, 194, 255, 226, 255, 84, 255, 76, 255, 100, 255, 0, 255, 38, 255, 229, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 233, 255, 255, 255, 255, 255, 255, 255, 168, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 162, 255, 253, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 145, 255, 215, 255, 246, 255, 229, 255, 160, 255, 21, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 201, 255, 247, 255, 241, 255, 179, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 253, 255, 173, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 154, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 236, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 133, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 192, 255, 252, 255, 120, 255, 137, 255, 107, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 63, 255, 255, 255, 145, 255, 0, 255, 0, 255, 0, 255, 130, 255, 255, 255, 97, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 141, 255, 247, 255, 211, 255, 90, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 168, 255, 255, 255, 145, 255, 233, 255, 240, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 151, 255, 255, 255, 188, 255, 108, 255, 70, 255, 99, 255, 182, 255, 255, 255, 158, 255, 108, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 14, 255, 230, 255, 234, 255, 235, 255, 219, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 129, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 182, 255, 0, 255, 0, 255, 0, 255, 28, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 237, 255, 12, 255, 39, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 151, 255, 255, 255, 188, 255, 108, 255, 70, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 71, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 203, 255, 150, 255, 120, 255, 160, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 255, 255, 236, 255, 155, 255, 168, 255, 251, 255, 240, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 125, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 105, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 246, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 159, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 18, 255, 245, 255, 236, 255, 56, 255, 10, 255, 77, 255, 241, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 54, 255, 253, 255, 242, 255, 105, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 55, 255, 255, 255, 255, 255, 223, 255, 43, 255, 0, 255, 0, 255, 5, 255, 8, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 95, 255, 255, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 50, 255, 252, 255, 214, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 43, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 208, 255, 0, 255, 70, 255, 255, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 125, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 232, 255, 206, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 241, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 223, 255, 253, 255, 41, 255, 0, 255, 0, 255, 98, 255, 255, 255, 162, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 79, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 255, 255, 98, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 245, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 39, 255, 7, 255, 21, 255, 106, 255, 253, 255, 246, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 106, 255, 252, 255, 255, 255, 255, 255, 248, 255, 169, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 150, 255, 245, 255, 240, 255, 144, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 245, 255, 247, 255, 232, 255, 249, 255, 78, 255, 0, 255, 0, 255, 216, 255, 249, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 255, 255, 255, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 206, 255, 254, 255, 59, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 230, 255, 251, 255, 32, 255, 0, 255, 0, 255, 118, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 207, 255, 0, 255, 48, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 125, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 145, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 161, 255, 226, 255, 248, 255, 252, 255, 255, 255, 255, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 255, 255, 203, 255, 0, 255, 0, 255, 0, 255, 7, 255, 254, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 86, 255, 255, 255, 98, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 78, 255, 255, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 235, 255, 255, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 109, 255, 112, 255, 36, 255, 129, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 19, 255, 124, 255, 232, 255, 254, 255, 184, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 236, 255, 250, 255, 58, 255, 36, 255, 228, 255, 250, 255, 80, 255, 52, 255, 255, 255, 177, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 58, 255, 254, 255, 177, 255, 211, 255, 248, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 118, 255, 255, 255, 149, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 227, 255, 143, 255, 165, 255, 235, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 237, 255, 12, 255, 6, 255, 223, 255, 194, 255, 32, 255, 24, 255, 58, 255, 0, 255, 0, 255, 174, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 54, 255, 255, 255, 131, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 211, 255, 255, 255, 136, 255, 61, 255, 44, 255, 212, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 255, 255, 182, 255, 0, 255, 0, 255, 0, 255, 0, 255, 239, 255, 247, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 202, 255, 255, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 68, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 97, 255, 255, 255, 86, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 177, 255, 255, 255, 95, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 65, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 160, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 240, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 98, 255, 212, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 189, 255, 0, 255, 0, 255, 37, 255, 229, 255, 250, 255, 214, 255, 253, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 208, 255, 247, 255, 32, 255, 66, 255, 255, 255, 190, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 246, 255, 227, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 131, 255, 232, 255, 248, 255, 191, 255, 80, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 162, 255, 112, 255, 0, 255, 58, 255, 226, 255, 255, 255, 255, 255, 178, 255, 0, 255, 36, 255, 230, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 218, 255, 221, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 50, 255, 255, 255, 187, 255, 0, 255, 0, 255, 0, 255, 220, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 255, 255, 204, 255, 0, 255, 0, 255, 0, 255, 7, 255, 254, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 244, 255, 206, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 71, 255, 255, 255, 229, 255, 38, 255, 0, 255, 0, 255, 0, 255, 111, 255, 255, 255, 215, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 30, 255, 0, 255, 0, 255, 0, 255, 21, 255, 232, 255, 251, 255, 22, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 142, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 255, 255, 222, 255, 6, 255, 0, 255, 0, 255, 50, 255, 251, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 128, 255, 0, 255, 0, 255, 173, 255, 255, 255, 93, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 187, 255, 255, 255, 77, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 229, 255, 59, 255, 0, 255, 2, 255, 37, 255, 39, 255, 1, 255, 20, 255, 207, 255, 93, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 174, 255, 0, 255, 0, 255, 47, 255, 253, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 253, 255, 45, 255, 0, 255, 0, 255, 98, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 41, 255, 255, 255, 113, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 232, 255, 211, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 192, 255, 245, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 143, 255, 255, 255, 248, 255, 185, 255, 166, 255, 211, 255, 255, 255, 239, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 253, 255, 195, 255, 157, 255, 164, 255, 236, 255, 255, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 87, 255, 142, 255, 140, 255, 201, 255, 255, 255, 204, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 195, 255, 255, 255, 201, 255, 126, 255, 149, 255, 229, 255, 255, 255, 247, 255, 250, 255, 83, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 26, 255, 242, 255, 224, 255, 9, 255, 0, 255, 0, 255, 32, 255, 247, 255, 234, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 87, 255, 255, 255, 243, 255, 164, 255, 164, 255, 164, 255, 164, 255, 164, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 227, 255, 137, 255, 40, 255, 5, 255, 24, 255, 102, 255, 224, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 255, 255, 147, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 237, 255, 251, 255, 140, 255, 136, 255, 236, 255, 227, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 253, 255, 238, 255, 155, 255, 166, 255, 251, 255, 243, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 99, 255, 248, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 151, 255, 255, 255, 38, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 250, 255, 169, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 189, 255, 239, 255, 255, 255, 255, 255, 213, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 150, 255, 221, 255, 246, 255, 246, 255, 203, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 251, 255, 245, 255, 209, 255, 124, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 137, 255, 220, 255, 249, 255, 238, 255, 185, 255, 80, 255, 38, 255, 229, 255, 251, 255, 86, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 170, 255, 255, 255, 83, 255, 0, 255, 0, 255, 0, 255, 0, 255, 131, 255, 255, 255, 156, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 145, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 132, 255, 212, 255, 242, 255, 224, 255, 165, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 202, 255, 234, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 212, 255, 249, 255, 221, 255, 98, 255, 105, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 194, 255, 244, 255, 242, 255, 181, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 253, 255, 143, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 122, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 223, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 231, 255, 28, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 28, 255, 163, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 198, 255, 255, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 139, 255, 248, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 240, 255, 157, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 41, 255, 239, 255, 253, 255, 87, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 255, 255, 255, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 255, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 180, 255, 202, 255, 255, 255, 201, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 72, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 72, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 57, 255, 128, 255, 122, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 76, 255, 76, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 45, 255, 76, 255, 76, 255, 76, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 45, 255, 233, 255, 237, 255, 175, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 149, 255, 236, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 119, 255, 216, 255, 202, 255, 0, 255, 0, 255, 0, 255, 0, 255, 158, 255, 224, 255, 136, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 244, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 253, 255, 240, 255, 200, 255, 107, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 210, 255, 205, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 58, 255, 171, 255, 240, 255, 238, 255, 180, 255, 34, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 157, 255, 234, 255, 248, 255, 203, 255, 69, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 125, 255, 222, 255, 250, 255, 221, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 64, 255, 172, 255, 243, 255, 240, 255, 160, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 82, 255, 87, 255, 220, 255, 247, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 89, 255, 187, 255, 232, 255, 244, 255, 207, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 121, 255, 203, 255, 240, 255, 238, 255, 187, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 108, 255, 139, 255, 233, 255, 247, 255, 190, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 146, 255, 48, 255, 199, 255, 248, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 156, 255, 101, 255, 215, 255, 248, 255, 219, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 99, 255, 141, 255, 230, 255, 245, 255, 203, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 168, 255, 95, 255, 219, 255, 249, 255, 213, 255, 77, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 165, 255, 248, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 86, 255, 255, 255, 218, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 207, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 62, 255, 144, 255, 252, 255, 173, 255, 136, 255, 67, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 243, 255, 152, 255, 155, 255, 181, 255, 248, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 227, 255, 221, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 248, 255, 178, 255, 108, 255, 160, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 208, 255, 255, 255, 162, 255, 124, 255, 225, 255, 251, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 150, 255, 255, 255, 194, 255, 121, 255, 196, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 246, 255, 163, 255, 109, 255, 184, 255, 255, 255, 166, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 184, 255, 254, 255, 218, 255, 194, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 126, 255, 178, 255, 132, 255, 124, 255, 222, 255, 252, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 177, 255, 163, 255, 124, 255, 138, 255, 244, 255, 227, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 246, 255, 196, 255, 110, 255, 151, 255, 254, 255, 224, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 204, 255, 234, 255, 232, 255, 197, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 248, 255, 236, 255, 127, 255, 113, 255, 226, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 248, 255, 209, 255, 114, 255, 131, 255, 247, 255, 242, 255, 22, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 247, 255, 225, 255, 118, 255, 125, 255, 242, 255, 252, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 139, 255, 255, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 255, 255, 151, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 127, 255, 255, 255, 236, 255, 253, 255, 214, 255, 248, 255, 219, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 224, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 205, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 197, 255, 0, 255, 0, 255, 0, 255, 212, 255, 255, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 158, 255, 0, 255, 0, 255, 43, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 31, 255, 253, 255, 218, 255, 4, 255, 0, 255, 6, 255, 228, 255, 233, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 179, 255, 0, 255, 0, 255, 2, 255, 217, 255, 253, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 255, 255, 102, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 83, 255, 255, 255, 114, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 147, 255, 255, 255, 50, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 235, 255, 8, 255, 0, 255, 0, 255, 156, 255, 255, 255, 91, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 255, 255, 161, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 255, 255, 69, 255, 0, 255, 0, 255, 84, 255, 255, 255, 145, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 111, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 244, 255, 16, 255, 0, 255, 0, 255, 148, 255, 255, 255, 81, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 255, 255, 51, 255, 0, 255, 0, 255, 92, 255, 255, 255, 155, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 246, 255, 225, 255, 11, 255, 244, 255, 24, 255, 10, 255, 38, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 224, 255, 0, 255, 0, 255, 0, 255, 34, 255, 255, 255, 203, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 127, 255, 0, 255, 0, 255, 0, 255, 174, 255, 255, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 255, 255, 92, 255, 20, 255, 20, 255, 20, 255, 236, 255, 218, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 151, 255, 20, 255, 20, 255, 20, 255, 177, 255, 255, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 119, 255, 0, 255, 0, 255, 0, 255, 146, 255, 255, 255, 73, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 98, 255, 200, 255, 241, 255, 251, 255, 253, 255, 255, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 133, 255, 215, 255, 245, 255, 252, 255, 254, 255, 255, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 183, 255, 0, 255, 0, 255, 0, 255, 82, 255, 255, 255, 137, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 255, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 252, 255, 2, 255, 0, 255, 0, 255, 46, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 162, 255, 241, 255, 242, 255, 165, 255, 118, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 191, 255, 0, 255, 0, 255, 0, 255, 110, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 247, 255, 0, 255, 0, 255, 0, 255, 18, 255, 255, 255, 201, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 244, 255, 237, 255, 32, 255, 244, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 224, 255, 0, 255, 1, 255, 25, 255, 157, 255, 255, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 130, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 89, 255, 255, 255, 213, 255, 85, 255, 49, 255, 106, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 153, 255, 255, 255, 178, 255, 69, 255, 45, 255, 159, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 66, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 234, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 212, 255, 148, 255, 203, 255, 241, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 236, 255, 0, 255, 0, 255, 0, 255, 3, 255, 255, 255, 224, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 180, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 10, 255, 254, 255, 191, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 248, 255, 253, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 255, 121, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 158, 255, 255, 255, 117, 255, 68, 255, 68, 255, 68, 255, 68, 255, 64, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 94, 255, 255, 255, 164, 255, 68, 255, 68, 255, 68, 255, 68, 255, 68, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 130, 255, 0, 255, 0, 255, 0, 255, 155, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 255, 255, 59, 255, 0, 255, 0, 255, 92, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 240, 255, 244, 255, 6, 255, 0, 255, 0, 255, 156, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 194, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 254, 255, 222, 255, 10, 255, 0, 255, 2, 255, 195, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 253, 255, 5, 255, 0, 255, 0, 255, 27, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 186, 255, 255, 255, 159, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 147, 255, 255, 255, 186, 255, 85, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 195, 255, 255, 255, 255, 255, 207, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 241, 255, 140, 255, 140, 255, 161, 255, 235, 255, 249, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 149, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 175, 255, 164, 255, 164, 255, 164, 255, 164, 255, 220, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 31, 255, 253, 255, 207, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 208, 255, 4, 255, 0, 255, 14, 255, 233, 255, 252, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 187, 255, 255, 255, 46, 255, 0, 255, 0, 255, 173, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 248, 255, 236, 255, 2, 255, 0, 255, 10, 255, 226, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 249, 255, 27, 255, 0, 255, 1, 255, 182, 255, 255, 255, 87, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 255, 255, 141, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 255, 255, 85, 255, 0, 255, 0, 255, 119, 255, 255, 255, 151, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 164, 255, 255, 255, 207, 255, 59, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 198, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 244, 255, 148, 255, 249, 255, 241, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 224, 255, 0, 255, 0, 255, 0, 255, 24, 255, 242, 255, 246, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 200, 255, 255, 255, 188, 255, 133, 255, 142, 255, 185, 255, 124, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 141, 255, 255, 255, 214, 255, 139, 255, 136, 255, 170, 255, 177, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 245, 255, 205, 255, 149, 255, 216, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 123, 255, 255, 255, 203, 255, 122, 255, 183, 255, 226, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 187, 255, 255, 255, 170, 255, 126, 255, 212, 255, 226, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 245, 255, 228, 255, 151, 255, 191, 255, 255, 255, 220, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 118, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 247, 255, 245, 255, 161, 255, 165, 255, 252, 255, 250, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 52, 255, 227, 255, 241, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 228, 255, 232, 255, 52, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 244, 255, 24, 255, 153, 255, 255, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 224, 255, 0, 255, 0, 255, 0, 255, 0, 255, 207, 255, 255, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 142, 255, 225, 255, 251, 255, 238, 255, 193, 255, 65, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 108, 255, 211, 255, 249, 255, 243, 255, 210, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 112, 255, 170, 255, 244, 255, 240, 255, 156, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 156, 255, 238, 255, 243, 255, 175, 255, 25, 255, 232, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 188, 255, 245, 255, 234, 255, 142, 255, 46, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 158, 255, 135, 255, 233, 255, 247, 255, 187, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 86, 255, 255, 255, 137, 255, 0, 255, 0, 255, 0, 255, 109, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 219, 255, 91, 255, 219, 255, 249, 255, 211, 255, 73, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 149, 255, 255, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 17, 255, 255, 255, 165, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 175, 255, 94, 255, 54, 255, 245, 255, 101, 255, 227, 255, 247, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 224, 255, 0, 255, 0, 255, 0, 255, 33, 255, 246, 255, 254, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 103, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 167, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 255, 255, 215, 255, 6, 255, 0, 255, 0, 255, 182, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 231, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 243, 255, 156, 255, 156, 255, 175, 255, 242, 255, 255, 255, 157, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 255, 255, 206, 255, 143, 255, 193, 255, 234, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 142, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 159, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 48, 255, 72, 255, 247, 255, 69, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 255, 255, 243, 255, 208, 255, 109, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 19, 255, 167, 255, 243, 255, 241, 255, 158, 255, 51, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 110, 255, 255, 255, 148, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 26, 255, 137, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 244, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 195, 255, 255, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 211, 255, 255, 255, 212, 255, 0, 255, 0, 255, 0, 255, 0, 255, 164, 255, 255, 255, 220, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 164, 255, 254, 255, 224, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 49, 255, 62, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 50, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 220, 255, 248, 255, 204, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 18, 255, 152, 255, 230, 255, 250, 255, 219, 255, 119, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 154, 255, 230, 255, 249, 255, 227, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 180, 255, 239, 255, 247, 255, 214, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 135, 255, 222, 255, 248, 255, 231, 255, 179, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 61, 255, 179, 255, 245, 255, 241, 255, 172, 255, 22, 255, 129, 255, 228, 255, 245, 255, 204, 255, 63, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 146, 255, 255, 255, 90, 255, 0, 255, 0, 255, 0, 255, 79, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 123, 255, 218, 255, 249, 255, 235, 255, 179, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 21, 255, 131, 255, 236, 255, 199, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 55, 255, 167, 255, 224, 255, 247, 255, 221, 255, 126, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 208, 255, 255, 255, 191, 255, 149, 255, 215, 255, 255, 255, 149, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 212, 255, 255, 255, 203, 255, 154, 255, 192, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 244, 255, 254, 255, 181, 255, 156, 255, 210, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 129, 255, 255, 255, 179, 255, 123, 255, 154, 255, 226, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 248, 255, 168, 255, 108, 255, 199, 255, 255, 255, 236, 255, 222, 255, 116, 255, 137, 255, 252, 255, 233, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 177, 255, 0, 255, 0, 255, 0, 255, 165, 255, 255, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 255, 255, 224, 255, 157, 255, 176, 255, 190, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 183, 255, 251, 255, 206, 255, 147, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 196, 255, 139, 255, 119, 255, 193, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 95, 255, 255, 255, 166, 255, 0, 255, 0, 255, 9, 255, 217, 255, 254, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 97, 255, 255, 255, 177, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 161, 255, 255, 255, 114, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 191, 255, 0, 255, 0, 255, 36, 255, 255, 255, 255, 255, 43, 255, 0, 255, 0, 255, 174, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 215, 255, 248, 255, 15, 255, 0, 255, 7, 255, 242, 255, 227, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 254, 255, 227, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 243, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 19, 255, 255, 255, 178, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 158, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 133, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 158, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 222, 255, 255, 255, 15, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 100, 255, 255, 255, 237, 255, 128, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 125, 255, 0, 255, 0, 255, 2, 255, 255, 255, 234, 255, 0, 255, 0, 255, 0, 255, 138, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 122, 255, 255, 255, 94, 255, 0, 255, 80, 255, 255, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 94, 255, 255, 255, 142, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 183, 255, 234, 255, 250, 255, 252, 255, 255, 255, 199, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 174, 255, 255, 255, 54, 255, 0, 255, 0, 255, 0, 255, 111, 255, 255, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 54, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 246, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 217, 255, 255, 255, 251, 255, 145, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 255, 255, 216, 255, 0, 255, 0, 255, 0, 255, 136, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 254, 255, 180, 255, 0, 255, 165, 255, 255, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 118, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 244, 255, 240, 255, 105, 255, 54, 255, 53, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 153, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 133, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 161, 255, 255, 255, 77, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 225, 255, 255, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 75, 255, 218, 255, 255, 255, 103, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 255, 255, 216, 255, 0, 255, 0, 255, 0, 255, 136, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 191, 255, 249, 255, 20, 255, 241, 255, 204, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 97, 255, 255, 255, 141, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 123, 255, 0, 255, 0, 255, 28, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 83, 255, 255, 255, 170, 255, 0, 255, 0, 255, 8, 255, 217, 255, 254, 255, 38, 255, 0, 255, 0, 255, 0, 255, 0, 255, 105, 255, 255, 255, 175, 255, 1, 255, 0, 255, 0, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 169, 255, 255, 255, 112, 255, 0, 255, 0, 255, 0, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 0, 255, 0, 255, 0, 255, 67, 255, 255, 255, 145, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 255, 255, 216, 255, 0, 255, 0, 255, 0, 255, 136, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 98, 255, 255, 255, 146, 255, 255, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 41, 255, 255, 255, 226, 255, 14, 255, 0, 255, 0, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 123, 255, 255, 255, 110, 255, 0, 255, 0, 255, 109, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 195, 255, 255, 255, 193, 255, 148, 255, 213, 255, 255, 255, 155, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 223, 255, 255, 255, 201, 255, 153, 255, 186, 255, 175, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 250, 255, 254, 255, 178, 255, 156, 255, 204, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 179, 255, 182, 255, 132, 255, 121, 255, 206, 255, 255, 255, 81, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 255, 255, 216, 255, 0, 255, 0, 255, 0, 255, 136, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 246, 255, 243, 255, 251, 255, 21, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 173, 255, 255, 255, 223, 255, 155, 255, 172, 255, 229, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 231, 255, 125, 255, 156, 255, 238, 255, 240, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 143, 255, 227, 255, 250, 255, 220, 255, 123, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 167, 255, 237, 255, 249, 255, 223, 255, 107, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 61, 255, 192, 255, 245, 255, 245, 255, 207, 255, 63, 255, 0, 255, 0, 255, 0, 255, 0, 255, 108, 255, 214, 255, 244, 255, 243, 255, 207, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 255, 255, 216, 255, 0, 255, 0, 255, 0, 255, 136, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 167, 255, 255, 255, 178, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 138, 255, 226, 255, 251, 255, 233, 255, 157, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 113, 255, 227, 255, 248, 255, 202, 255, 56, 255, 169, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 237, 255, 142, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 102, 255, 255, 255, 242, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 255, 255, 255, 255, 251, 255, 228, 255, 168, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 255, 255, 254, 255, 237, 255, 182, 255, 60, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 55, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 249, 255, 158, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 193, 255, 249, 255, 255, 255, 87, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 217, 255, 152, 255, 158, 255, 194, 255, 253, 255, 253, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 165, 255, 157, 255, 197, 255, 255, 255, 250, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 141, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 103, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 167, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 254, 255, 150, 255, 246, 255, 178, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 52, 255, 235, 255, 253, 255, 57, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 122, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 239, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 159, 255, 254, 255, 255, 255, 255, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 106, 255, 157, 255, 239, 255, 237, 255, 178, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 161, 255, 125, 255, 230, 255, 247, 255, 190, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 71, 255, 176, 255, 250, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 100, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 36, 255, 255, 255, 205, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 214, 255, 249, 255, 215, 255, 84, 255, 228, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 101, 255, 221, 255, 255, 255, 119, 255, 108, 255, 59, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 235, 255, 212, 255, 148, 255, 198, 255, 255, 255, 199, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 240, 255, 223, 255, 150, 255, 187, 255, 255, 255, 224, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 240, 255, 6, 255, 92, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 19, 255, 255, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 61, 255, 255, 255, 189, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 253, 255, 251, 255, 163, 255, 161, 255, 242, 255, 244, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 212, 255, 6, 255, 0, 255, 2, 255, 222, 255, 255, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 245, 255, 20, 255, 0, 255, 0, 255, 171, 255, 255, 255, 91, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 255, 255, 162, 255, 0, 255, 14, 255, 248, 255, 195, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 243, 255, 255, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 10, 255, 56, 255, 206, 255, 255, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 164, 255, 255, 255, 104, 255, 0, 255, 0, 255, 70, 255, 255, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 131, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 190, 255, 0, 255, 0, 255, 0, 255, 86, 255, 255, 255, 137, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 138, 255, 255, 255, 78, 255, 0, 255, 0, 255, 178, 255, 254, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 245, 255, 253, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 213, 255, 255, 255, 13, 255, 0, 255, 0, 255, 0, 255, 241, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 66, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 227, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 168, 255, 152, 255, 129, 255, 61, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 236, 255, 246, 255, 0, 255, 0, 255, 0, 255, 0, 255, 220, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 192, 255, 0, 255, 0, 255, 0, 255, 88, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 65, 255, 255, 255, 213, 255, 164, 255, 164, 255, 164, 255, 164, 255, 253, 255, 212, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 116, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 214, 255, 255, 255, 9, 255, 0, 255, 0, 255, 0, 255, 237, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 185, 255, 255, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 248, 255, 25, 255, 0, 255, 0, 255, 174, 255, 255, 255, 87, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 193, 255, 255, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 76, 255, 245, 255, 250, 255, 45, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 167, 255, 255, 255, 93, 255, 0, 255, 0, 255, 55, 255, 255, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 133, 255, 255, 255, 202, 255, 143, 255, 109, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 243, 255, 227, 255, 151, 255, 187, 255, 255, 255, 220, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 239, 255, 241, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 106, 255, 255, 255, 138, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 218, 255, 156, 255, 165, 255, 212, 255, 255, 255, 249, 255, 93, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 254, 255, 248, 255, 157, 255, 153, 255, 233, 255, 241, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 172, 255, 241, 255, 240, 255, 124, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 87, 255, 135, 255, 233, 255, 247, 255, 187, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 82, 255, 255, 255, 162, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 252, 255, 227, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 255, 255, 255, 255, 247, 255, 218, 255, 154, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 87, 255, 217, 255, 249, 255, 212, 255, 74, 255, 166, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 208, 255, 201, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 121, 255, 255, 255, 54, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 232, 255, 199, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 79, 255, 255, 255, 107, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 141, 255, 255, 255, 45, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 187, 255, 251, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 207, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 214, 255, 226, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 164, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 105, 255, 255, 255, 83, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 251, 255, 166, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 166, 255, 248, 255, 22, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 238, 255, 155, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 70, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0), +"format": "LumAlpha8", +"height": 256, +"mipmaps": false, +"width": 256 +} + +[sub_resource type="Image" id="Image_j7vsp"] +data = { +"data": PackedByteArray(255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 48, 255, 48, 255, 48, 255, 46, 255, 34, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 37, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 38, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 41, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 48, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 38, 255, 0, 255, 21, 255, 39, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 48, 255, 48, 255, 27, 255, 0, 255, 0, 255, 0, 255, 17, 255, 48, 255, 48, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 40, 255, 0, 255, 15, 255, 41, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 48, 255, 48, 255, 48, 255, 4, 255, 0, 255, 0, 255, 13, 255, 48, 255, 48, 255, 25, 255, 0, 255, 0, 255, 0, 255, 36, 255, 48, 255, 48, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 48, 255, 15, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 48, 255, 48, 255, 48, 255, 48, 255, 48, 255, 48, 255, 48, 255, 48, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 42, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 48, 255, 48, 255, 48, 255, 44, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 41, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 48, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 48, 255, 48, 255, 13, 255, 0, 255, 0, 255, 47, 255, 48, 255, 48, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 33, 255, 38, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 255, 180, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 150, 255, 235, 255, 255, 255, 255, 255, 253, 255, 168, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 45, 255, 185, 255, 255, 255, 255, 255, 255, 255, 232, 255, 145, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 61, 255, 209, 255, 255, 255, 255, 255, 251, 255, 164, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 119, 255, 255, 255, 243, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 212, 255, 191, 255, 255, 255, 255, 255, 253, 255, 166, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 207, 255, 144, 255, 251, 255, 255, 255, 203, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 231, 255, 255, 255, 255, 255, 57, 255, 0, 255, 0, 255, 111, 255, 255, 255, 255, 255, 179, 255, 0, 255, 0, 255, 0, 255, 229, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 62, 255, 206, 255, 255, 255, 255, 255, 255, 255, 198, 255, 49, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 62, 255, 205, 255, 255, 255, 255, 255, 255, 255, 215, 255, 93, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 72, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 172, 255, 250, 255, 255, 255, 255, 255, 250, 255, 187, 255, 85, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 193, 255, 255, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 168, 255, 255, 255, 255, 255, 117, 255, 0, 255, 0, 255, 179, 255, 255, 255, 255, 255, 243, 255, 5, 255, 0, 255, 33, 255, 255, 255, 255, 255, 243, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 57, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 57, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 72, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 210, 255, 153, 255, 176, 255, 251, 255, 255, 255, 255, 255, 109, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 198, 255, 192, 255, 165, 255, 151, 255, 245, 255, 255, 255, 255, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 255, 255, 255, 255, 241, 255, 122, 255, 153, 255, 229, 255, 152, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 190, 255, 255, 255, 255, 255, 199, 255, 124, 255, 236, 255, 255, 255, 255, 255, 69, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 134, 255, 255, 255, 255, 255, 49, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 242, 255, 122, 255, 141, 255, 255, 255, 255, 255, 242, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 228, 255, 199, 255, 142, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 177, 255, 0, 255, 4, 255, 242, 255, 255, 255, 255, 255, 255, 255, 62, 255, 0, 255, 93, 255, 255, 255, 255, 255, 184, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 0, 255, 1, 255, 47, 255, 48, 255, 48, 255, 34, 255, 0, 255, 0, 255, 0, 255, 0, 255, 125, 255, 164, 255, 164, 255, 201, 255, 255, 255, 255, 255, 222, 255, 164, 255, 164, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 217, 255, 149, 255, 224, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 210, 255, 159, 255, 217, 255, 255, 255, 255, 255, 246, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 195, 255, 255, 255, 255, 255, 228, 255, 156, 255, 195, 255, 247, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 19, 255, 38, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 72, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 238, 255, 255, 255, 255, 255, 246, 255, 189, 255, 186, 255, 238, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 163, 255, 255, 255, 255, 255, 131, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 154, 255, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 53, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 255, 255, 255, 255, 255, 255, 201, 255, 93, 255, 9, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 14, 255, 253, 255, 255, 255, 255, 255, 87, 255, 68, 255, 155, 255, 255, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 133, 255, 0, 255, 0, 255, 244, 255, 255, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 191, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 255, 255, 255, 255, 235, 255, 1, 255, 60, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 255, 0, 255, 152, 255, 255, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 0, 255, 142, 255, 255, 255, 255, 255, 245, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 254, 255, 255, 255, 253, 255, 27, 255, 0, 255, 41, 255, 255, 255, 255, 255, 250, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 11, 255, 242, 255, 255, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 254, 255, 255, 255, 255, 255, 40, 255, 0, 255, 0, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 248, 255, 254, 255, 255, 255, 253, 255, 164, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 72, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 131, 255, 255, 255, 255, 255, 233, 255, 42, 255, 0, 255, 0, 255, 8, 255, 94, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 165, 255, 48, 255, 68, 255, 218, 255, 255, 255, 255, 255, 93, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 255, 66, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 96, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 165, 255, 48, 255, 48, 255, 48, 255, 122, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 231, 255, 255, 255, 255, 255, 41, 255, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 255, 0, 255, 212, 255, 255, 255, 255, 255, 57, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 117, 255, 255, 255, 255, 255, 251, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 45, 255, 255, 255, 255, 255, 232, 255, 0, 255, 0, 255, 0, 255, 242, 255, 255, 255, 255, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 231, 255, 255, 255, 255, 255, 58, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 255, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 153, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 72, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 210, 255, 255, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 255, 255, 251, 255, 100, 255, 49, 255, 217, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 97, 255, 218, 255, 255, 255, 255, 255, 255, 255, 240, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 168, 255, 255, 255, 255, 255, 101, 255, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 34, 255, 254, 255, 255, 255, 244, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 175, 255, 254, 255, 255, 255, 255, 255, 95, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 255, 255, 255, 255, 238, 255, 0, 255, 0, 255, 0, 255, 246, 255, 255, 255, 255, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 165, 255, 60, 255, 142, 255, 255, 255, 255, 255, 253, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 255, 255, 255, 255, 237, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 251, 255, 162, 255, 177, 255, 255, 255, 255, 255, 242, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 72, 255, 0, 255, 10, 255, 255, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 245, 255, 255, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 68, 255, 255, 255, 255, 255, 213, 255, 0, 255, 21, 255, 245, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 89, 255, 7, 255, 2, 255, 81, 255, 233, 255, 255, 255, 255, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 249, 255, 255, 255, 253, 255, 98, 255, 68, 255, 68, 255, 68, 255, 124, 255, 66, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 103, 255, 255, 255, 255, 255, 173, 255, 250, 255, 255, 255, 227, 255, 156, 255, 255, 255, 255, 255, 160, 255, 255, 255, 255, 255, 185, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 245, 255, 255, 255, 255, 255, 61, 255, 0, 255, 68, 255, 255, 255, 255, 255, 245, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 252, 255, 255, 255, 255, 255, 56, 255, 0, 255, 4, 255, 85, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 144, 255, 0, 255, 3, 255, 247, 255, 255, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 184, 255, 255, 255, 255, 255, 95, 255, 0, 255, 76, 255, 255, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 255, 255, 255, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 205, 255, 140, 255, 157, 255, 237, 255, 255, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 255, 255, 255, 255, 252, 255, 178, 255, 226, 255, 255, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 56, 255, 255, 255, 242, 255, 183, 255, 167, 255, 242, 255, 255, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 167, 255, 255, 255, 255, 255, 241, 255, 182, 255, 187, 255, 229, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 215, 255, 164, 255, 164, 255, 164, 255, 197, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 255, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 122, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 161, 255, 255, 255, 255, 255, 244, 255, 197, 255, 245, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 184, 255, 255, 255, 255, 255, 246, 255, 201, 255, 237, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 98, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 146, 255, 255, 255, 255, 255, 239, 255, 191, 255, 246, 255, 255, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 249, 255, 255, 255, 255, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 89, 255, 255, 255, 255, 255, 211, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 56, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 255, 19, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 212, 255, 150, 255, 124, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 210, 255, 255, 255, 255, 255, 109, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 118, 255, 255, 255, 255, 255, 214, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 163, 255, 234, 255, 245, 255, 196, 255, 78, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 127, 255, 206, 255, 238, 255, 245, 255, 214, 255, 130, 255, 15, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 145, 255, 223, 255, 250, 255, 239, 255, 207, 255, 124, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 23, 255, 0, 255, 204, 255, 255, 255, 255, 255, 255, 255, 245, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 176, 255, 254, 255, 255, 255, 255, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 146, 255, 225, 255, 250, 255, 229, 255, 154, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 41, 255, 170, 255, 235, 255, 250, 255, 229, 255, 162, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 61, 255, 193, 255, 238, 255, 241, 255, 176, 255, 143, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 137, 255, 255, 255, 255, 255, 234, 255, 59, 255, 0, 255, 0, 255, 10, 255, 75, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 233, 255, 204, 255, 219, 255, 255, 255, 255, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 106, 255, 255, 255, 255, 255, 255, 255, 210, 255, 0, 255, 0, 255, 134, 255, 255, 255, 255, 255, 255, 255, 187, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 142, 255, 255, 255, 255, 255, 236, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 242, 255, 255, 255, 255, 255, 255, 255, 229, 255, 222, 255, 250, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 255, 255, 255, 255, 255, 255, 142, 255, 0, 255, 0, 255, 65, 255, 255, 255, 255, 255, 255, 255, 123, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 7, 255, 210, 255, 255, 255, 255, 255, 189, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 78, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 255, 223, 255, 149, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 234, 255, 255, 255, 255, 255, 74, 255, 0, 255, 0, 255, 6, 255, 244, 255, 255, 255, 255, 255, 59, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 0, 255, 45, 255, 248, 255, 255, 255, 255, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 158, 255, 225, 255, 249, 255, 237, 255, 207, 255, 141, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 41, 255, 0, 255, 20, 255, 40, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 48, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 48, 255, 48, 255, 48, 255, 46, 255, 30, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 34, 255, 48, 255, 48, 255, 48, 255, 48, 255, 38, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 31, 255, 48, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 229, 255, 161, 255, 254, 255, 255, 255, 246, 255, 133, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 255, 164, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 142, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 218, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 255, 66, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 49, 255, 255, 255, 255, 255, 155, 255, 48, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 233, 255, 114, 255, 163, 255, 255, 255, 255, 255, 238, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 18, 255, 40, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 210, 255, 155, 255, 191, 255, 250, 255, 255, 255, 255, 255, 237, 255, 21, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 252, 255, 255, 255, 247, 255, 78, 255, 143, 255, 255, 255, 255, 255, 163, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 119, 255, 0, 255, 2, 255, 230, 255, 255, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 228, 255, 252, 255, 255, 255, 246, 255, 133, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 50, 255, 239, 255, 255, 255, 255, 255, 129, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 255, 255, 255, 255, 210, 255, 0, 255, 51, 255, 255, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 91, 255, 0, 255, 0, 255, 195, 255, 255, 255, 255, 255, 81, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 255, 255, 201, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 251, 255, 255, 255, 245, 255, 71, 255, 141, 255, 255, 255, 255, 255, 169, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 74, 255, 184, 255, 255, 255, 255, 255, 184, 255, 108, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 100, 255, 0, 255, 0, 255, 203, 255, 255, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 246, 255, 153, 255, 198, 255, 255, 255, 255, 255, 238, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 71, 255, 255, 255, 255, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 65, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 161, 255, 0, 255, 26, 255, 249, 255, 255, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 131, 255, 0, 255, 7, 255, 238, 255, 255, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 53, 255, 255, 255, 255, 255, 246, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 205, 255, 231, 255, 255, 255, 255, 255, 222, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 94, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 81, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 83, 255, 255, 255, 255, 255, 229, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 182, 255, 255, 255, 255, 255, 243, 255, 218, 255, 188, 255, 149, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 82, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 99, 255, 0, 255, 0, 255, 201, 255, 255, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 165, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 129, 255, 255, 255, 255, 255, 134, 255, 0, 255, 6, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 184, 255, 227, 255, 248, 255, 207, 255, 82, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 158, 255, 0, 255, 21, 255, 246, 255, 255, 255, 255, 255, 45, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 4, 255, 119, 255, 254, 255, 255, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 101, 255, 255, 255, 255, 255, 236, 255, 194, 255, 244, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 204, 255, 229, 255, 255, 255, 255, 255, 224, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 233, 255, 213, 255, 248, 255, 255, 255, 255, 255, 255, 255, 206, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 189, 255, 255, 255, 255, 255, 52, 255, 0, 255, 1, 255, 80, 255, 255, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 86, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 189, 255, 255, 255, 255, 255, 169, 255, 128, 255, 148, 255, 230, 255, 255, 255, 255, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 205, 255, 246, 255, 237, 255, 172, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 189, 255, 117, 255, 229, 255, 248, 255, 208, 255, 85, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 251, 255, 233, 255, 185, 255, 100, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 71, 255, 183, 255, 230, 255, 251, 255, 239, 255, 196, 255, 111, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0), +"format": "LumAlpha8", +"height": 256, +"mipmaps": false, +"width": 256 +} + +[sub_resource type="FontFile" id="FontFile_q72mg"] +data = PackedByteArray(119, 79, 70, 50, 0, 1, 0, 0, 0, 0, 181, 56, 0, 17, 0, 0, 0, 1, 141, 20, 0, 0, 180, 215, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 46, 27, 16, 28, 133, 110, 6, 96, 0, 135, 8, 8, 129, 38, 9, 143, 52, 17, 12, 10, 133, 131, 116, 132, 179, 17, 11, 142, 86, 0, 1, 54, 2, 36, 3, 157, 26, 4, 32, 5, 135, 118, 7, 190, 3, 12, 130, 24, 91, 47, 92, 113, 7, 235, 182, 221, 159, 168, 132, 244, 102, 85, 245, 3, 28, 214, 135, 78, 5, 219, 213, 131, 158, 219, 212, 113, 54, 85, 230, 2, 5, 199, 117, 183, 3, 36, 237, 164, 39, 6, 255, 255, 255, 255, 217, 201, 66, 14, 189, 251, 112, 255, 73, 4, 80, 218, 213, 180, 27, 100, 185, 204, 8, 228, 40, 138, 42, 100, 4, 156, 125, 40, 8, 142, 220, 20, 144, 100, 72, 202, 236, 24, 115, 84, 241, 52, 47, 235, 220, 182, 134, 157, 131, 39, 22, 185, 179, 211, 50, 110, 235, 163, 140, 24, 12, 103, 217, 59, 31, 36, 35, 227, 116, 30, 118, 156, 193, 15, 65, 79, 56, 10, 63, 188, 131, 106, 229, 44, 137, 171, 210, 94, 74, 223, 4, 199, 207, 155, 2, 65, 163, 181, 227, 197, 245, 105, 171, 131, 69, 253, 240, 139, 15, 22, 255, 178, 32, 37, 222, 44, 86, 119, 219, 176, 223, 106, 34, 199, 91, 166, 32, 39, 57, 11, 46, 75, 50, 5, 217, 185, 198, 230, 75, 105, 56, 48, 178, 195, 201, 73, 220, 78, 44, 31, 120, 14, 167, 117, 224, 157, 21, 198, 152, 36, 156, 214, 215, 94, 172, 103, 15, 175, 99, 32, 97, 252, 142, 23, 242, 212, 80, 76, 201, 252, 147, 169, 116, 165, 77, 9, 215, 220, 69, 244, 224, 54, 181, 205, 156, 27, 74, 15, 7, 76, 50, 202, 188, 6, 213, 154, 62, 39, 171, 203, 13, 197, 186, 255, 173, 112, 183, 62, 61, 244, 4, 239, 93, 216, 110, 74, 125, 89, 6, 198, 46, 131, 18, 109, 196, 138, 115, 94, 248, 151, 250, 251, 248, 95, 73, 118, 82, 231, 65, 192, 151, 167, 127, 40, 143, 36, 204, 4, 116, 223, 202, 1, 175, 155, 127, 111, 36, 121, 164, 105, 26, 225, 41, 70, 8, 59, 13, 54, 96, 152, 163, 13, 41, 62, 66, 8, 240, 136, 152, 31, 129, 66, 154, 198, 252, 212, 29, 134, 17, 17, 23, 34, 141, 84, 113, 80, 204, 167, 184, 40, 141, 116, 229, 35, 63, 142, 25, 55, 166, 20, 16, 23, 93, 212, 34, 206, 84, 113, 124, 234, 231, 35, 108, 249, 154, 245, 64, 3, 104, 52, 218, 191, 126, 134, 228, 144, 195, 113, 146, 118, 61, 191, 243, 210, 119, 226, 108, 137, 107, 131, 228, 162, 112, 21, 102, 151, 110, 120, 113, 118, 255, 167, 86, 86, 63, 240, 35, 2, 8, 32, 128, 80, 136, 8, 168, 4, 18, 169, 42, 75, 117, 118, 87, 118, 147, 172, 85, 149, 43, 174, 42, 57, 93, 61, 228, 156, 167, 250, 145, 134, 199, 29, 195, 226, 26, 30, 199, 240, 184, 134, 55, 66, 153, 171, 122, 104, 177, 79, 40, 243, 206, 48, 111, 250, 220, 236, 95, 26, 44, 88, 18, 124, 233, 18, 30, 193, 19, 52, 105, 192, 67, 240, 32, 45, 181, 236, 20, 232, 138, 178, 38, 118, 184, 237, 233, 203, 173, 221, 239, 55, 191, 173, 157, 190, 248, 220, 117, 238, 58, 0, 122, 155, 63, 243, 198, 204, 187, 115, 238, 188, 155, 251, 231, 231, 36, 231, 38, 183, 228, 53, 140, 188, 144, 205, 25, 33, 239, 206, 31, 121, 39, 47, 47, 84, 110, 228, 55, 47, 81, 42, 105, 98, 157, 177, 204, 205, 57, 195, 47, 105, 224, 117, 165, 184, 0, 8, 1, 5, 230, 70, 43, 84, 8, 45, 211, 226, 197, 124, 187, 41, 40, 99, 251, 50, 168, 81, 2, 244, 44, 185, 126, 47, 114, 17, 6, 50, 8, 104, 174, 44, 208, 241, 6, 128, 15, 55, 207, 44, 220, 136, 188, 240, 39, 132, 255, 214, 216, 10, 89, 33, 59, 48, 207, 254, 218, 38, 243, 244, 115, 195, 17, 179, 165, 20, 91, 229, 124, 145, 2, 16, 24, 128, 185, 213, 204, 155, 72, 198, 136, 136, 17, 185, 72, 22, 197, 232, 177, 72, 114, 108, 192, 136, 30, 17, 173, 116, 9, 152, 128, 5, 6, 218, 127, 167, 94, 24, 249, 96, 54, 40, 115, 150, 82, 198, 228, 132, 241, 23, 234, 46, 36, 6, 254, 87, 53, 5, 64, 181, 66, 185, 52, 186, 128, 254, 166, 92, 74, 131, 10, 104, 233, 241, 90, 1, 108, 39, 1, 175, 82, 153, 110, 74, 169, 220, 114, 15, 231, 76, 251, 103, 170, 46, 211, 173, 105, 195, 222, 199, 27, 147, 213, 173, 184, 49, 197, 222, 31, 230, 120, 39, 172, 132, 240, 72, 45, 214, 250, 119, 217, 46, 199, 45, 142, 193, 68, 177, 212, 39, 26, 255, 73, 43, 224, 137, 163, 119, 243, 255, 103, 54, 9, 144, 153, 93, 150, 148, 167, 254, 253, 254, 62, 34, 216, 41, 21, 10, 180, 28, 241, 146, 204, 79, 194, 125, 10, 237, 83, 215, 200, 53, 247, 247, 173, 182, 60, 246, 4, 118, 13, 33, 88, 181, 4, 157, 244, 197, 19, 6, 15, 115, 102, 146, 221, 35, 201, 46, 50, 74, 154, 108, 188, 203, 7, 148, 2, 58, 153, 215, 247, 224, 123, 252, 39, 120, 45, 96, 37, 75, 182, 75, 225, 242, 160, 249, 220, 63, 229, 170, 149, 239, 18, 216, 204, 150, 89, 66, 12, 251, 251, 127, 58, 155, 214, 188, 189, 62, 222, 77, 169, 199, 180, 178, 81, 224, 128, 8, 4, 249, 181, 113, 187, 4, 8, 24, 120, 104, 179, 51, 32, 66, 218, 190, 76, 131, 232, 172, 203, 206, 185, 255, 95, 169, 150, 215, 106, 0, 45, 182, 226, 2, 27, 161, 221, 181, 205, 121, 54, 159, 225, 44, 141, 159, 239, 20, 37, 57, 197, 136, 254, 93, 133, 2, 186, 145, 152, 36, 0, 220, 208, 4, 37, 139, 162, 54, 128, 77, 74, 38, 1, 5, 84, 53, 224, 71, 128, 228, 4, 133, 77, 233, 228, 16, 2, 8, 210, 26, 8, 147, 72, 128, 210, 82, 105, 2, 56, 81, 154, 77, 33, 79, 204, 71, 231, 163, 215, 231, 155, 102, 156, 242, 213, 135, 219, 101, 159, 239, 249, 232, 255, 179, 156, 149, 86, 33, 181, 167, 133, 97, 30, 246, 204, 29, 65, 180, 120, 143, 51, 72, 142, 59, 200, 55, 10, 186, 254, 175, 82, 87, 85, 119, 11, 245, 33, 44, 181, 4, 6, 201, 120, 132, 24, 188, 66, 194, 51, 66, 115, 117, 35, 230, 61, 132, 29, 200, 120, 15, 198, 123, 221, 217, 4, 161, 96, 110, 246, 196, 123, 30, 209, 236, 132, 27, 68, 187, 65, 184, 65, 182, 254, 151, 106, 218, 98, 255, 251, 123, 1, 75, 92, 132, 36, 231, 80, 169, 232, 14, 29, 203, 117, 119, 85, 201, 3, 255, 14, 78, 216, 253, 74, 0, 157, 40, 43, 133, 202, 173, 203, 163, 42, 208, 21, 206, 145, 173, 155, 210, 189, 224, 169, 191, 84, 255, 220, 254, 151, 190, 252, 129, 35, 26, 75, 208, 174, 149, 61, 59, 145, 140, 135, 91, 29, 143, 90, 192, 131, 33, 0, 206, 165, 235, 219, 246, 69, 15, 228, 81, 101, 18, 201, 244, 4, 197, 214, 42, 207, 109, 146, 75, 14, 137, 49, 117, 107, 4, 212, 164, 167, 127, 41, 134, 106, 40, 66, 105, 13, 101, 214, 225, 160, 85, 120, 92, 54, 174, 227, 156, 208, 191, 219, 42, 181, 18, 185, 142, 93, 99, 134, 18, 162, 98, 25, 171, 84, 85, 24, 186, 147, 111, 159, 108, 143, 135, 173, 170, 16, 129, 36, 150, 93, 6, 145, 92, 232, 28, 175, 121, 238, 254, 140, 237, 115, 110, 250, 163, 46, 13, 74, 65, 30, 241, 72, 185, 219, 177, 159, 214, 159, 183, 184, 173, 169, 137, 24, 52, 98, 137, 13, 148, 25, 102, 36, 254, 191, 114, 140, 169, 133, 52, 106, 58, 246, 219, 41, 142, 76, 7, 42, 243, 184, 3, 253, 250, 158, 31, 255, 57, 13, 251, 245, 134, 165, 98, 68, 84, 68, 69, 69, 85, 197, 184, 253, 49, 0, 54, 134, 187, 66, 14, 12, 0, 143, 5, 65, 227, 119, 217, 28, 201, 190, 200, 94, 28, 149, 78, 108, 99, 28, 86, 178, 124, 27, 30, 86, 110, 128, 240, 209, 88, 102, 26, 144, 37, 119, 156, 60, 12, 8, 224, 129, 230, 92, 214, 135, 16, 122, 229, 96, 22, 130, 20, 232, 105, 48, 192, 128, 128, 183, 0, 216, 20, 102, 64, 226, 205, 156, 248, 222, 69, 192, 129, 9, 30, 192, 1, 4, 222, 1, 79, 102, 50, 27, 159, 219, 40, 3, 88, 246, 142, 125, 27, 80, 224, 225, 197, 44, 248, 248, 34, 120, 120, 223, 100, 59, 176, 127, 249, 154, 203, 78, 29, 2, 142, 15, 91, 190, 243, 32, 56, 165, 62, 134, 57, 231, 193, 242, 248, 50, 215, 160, 19, 124, 74, 208, 255, 185, 155, 82, 145, 159, 91, 20, 184, 243, 57, 162, 193, 239, 234, 147, 73, 115, 238, 129, 34, 147, 230, 1, 86, 150, 64, 108, 112, 64, 1, 11, 90, 113, 8, 224, 53, 64, 0, 105, 198, 222, 50, 129, 13, 179, 72, 97, 45, 187, 249, 145, 63, 120, 106, 40, 50, 207, 242, 114, 52, 66, 156, 183, 63, 3, 107, 138, 157, 177, 43, 118, 199, 30, 16, 96, 128, 156, 97, 238, 50, 194, 104, 242, 211, 102, 30, 36, 97, 124, 206, 118, 118, 208, 196, 99, 220, 60, 101, 12, 94, 192, 43, 68, 99, 139, 173, 202, 14, 216, 65, 239, 241, 59, 241, 97, 204, 7, 5, 4, 107, 142, 195, 0, 77, 15, 2, 76, 108, 69, 252, 139, 131, 23, 190, 149, 163, 48, 7, 54, 182, 41, 234, 98, 75, 212, 199, 214, 104, 136, 207, 194, 18, 219, 98, 115, 141, 242, 138, 224, 213, 177, 13, 190, 234, 121, 228, 141, 120, 208, 58, 150, 129, 12, 37, 99, 143, 148, 178, 190, 35, 81, 154, 124, 17, 16, 112, 138, 54, 131, 87, 177, 244, 76, 102, 225, 205, 108, 248, 49, 31, 124, 25, 126, 73, 108, 83, 108, 123, 242, 185, 128, 99, 219, 99, 135, 5, 88, 32, 8, 224, 72, 136, 9, 45, 203, 228, 224, 133, 180, 56, 191, 58, 6, 112, 128, 196, 151, 32, 66, 189, 4, 12, 178, 200, 245, 98, 191, 94, 17, 141, 160, 205, 30, 59, 28, 185, 30, 163, 41, 184, 239, 41, 11, 12, 255, 211, 213, 48, 0, 210, 154, 209, 167, 223, 223, 185, 196, 0, 122, 27, 127, 10, 251, 91, 44, 38, 70, 224, 40, 138, 255, 1, 250, 236, 116, 8, 184, 9, 0, 251, 3, 112, 196, 25, 75, 117, 240, 62, 1, 253, 175, 252, 39, 201, 230, 165, 209, 213, 187, 3, 178, 15, 0, 209, 233, 0, 216, 93, 29, 1, 204, 152, 14, 28, 91, 123, 100, 191, 200, 122, 152, 144, 9, 69, 22, 235, 112, 209, 103, 34, 139, 178, 50, 251, 216, 106, 109, 167, 29, 48, 187, 141, 217, 180, 247, 30, 239, 167, 252, 138, 247, 248, 111, 254, 50, 16, 12, 195, 60, 176, 119, 176, 224, 246, 200, 227, 206, 180, 37, 246, 198, 129, 56, 28, 157, 241, 83, 92, 143, 91, 122, 27, 207, 85, 158, 138, 244, 145, 182, 104, 187, 154, 116, 86, 231, 244, 147, 250, 210, 107, 87, 196, 239, 52, 234, 22, 53, 65, 93, 163, 158, 251, 253, 195, 239, 127, 254, 151, 192, 183, 2, 182, 129, 20, 164, 97, 8, 166, 32, 15, 11, 176, 4, 27, 112, 5, 52, 195, 90, 216, 14, 107, 96, 163, 143, 44, 112, 43, 159, 195, 7, 125, 180, 47, 228, 75, 248, 182, 208, 104, 80, 5, 109, 22, 180, 37, 237, 166, 41, 154, 165, 101, 186, 148, 254, 36, 120, 237, 111, 124, 170, 167, 223, 244, 52, 0, 187, 147, 133, 156, 253, 252, 72, 191, 133, 90, 180, 105, 77, 103, 59, 109, 191, 253, 96, 99, 54, 225, 179, 235, 17, 46, 11, 119, 234, 192, 186, 89, 248, 220, 97, 141, 67, 142, 111, 98, 192, 1, 56, 119, 172, 124, 21, 171, 84, 91, 181, 67, 59, 55, 228, 156, 130, 250, 119, 5, 191, 83, 169, 171, 84, 41, 53, 73, 185, 168, 23, 126, 255, 220, 62, 42, 4, 108, 5, 157, 16, 222, 131, 131, 121, 161, 92, 56, 212, 84, 131, 56, 110, 188, 133, 160, 19, 0, 77, 234, 211, 35, 145, 51, 59, 123, 196, 93, 18, 32, 121, 248, 152, 221, 194, 89, 186, 40, 107, 35, 160, 154, 89, 243, 172, 155, 155, 103, 101, 251, 182, 71, 187, 183, 11, 139, 91, 119, 213, 143, 247, 170, 111, 245, 19, 30, 56, 87, 189, 253, 123, 202, 115, 227, 172, 5, 86, 214, 57, 103, 181, 23, 152, 156, 169, 141, 222, 220, 63, 61, 166, 126, 189, 161, 239, 22, 184, 119, 253, 189, 217, 35, 231, 239, 213, 0, 108, 165, 71, 184, 247, 188, 253, 15, 111, 247, 143, 207, 120, 243, 226, 206, 243, 226, 6, 43, 150, 140, 104, 81, 231, 143, 50, 150, 191, 184, 61, 11, 182, 254, 195, 20, 26, 130, 139, 55, 86, 232, 208, 194, 66, 1, 131, 49, 252, 155, 225, 254, 225, 222, 95, 255, 9, 16, 185, 94, 240, 111, 99, 224, 83, 253, 40, 159, 105, 159, 100, 193, 43, 24, 241, 219, 19, 179, 135, 207, 132, 167, 226, 191, 18, 42, 140, 127, 241, 36, 90, 249, 43, 190, 228, 89, 180, 241, 28, 219, 199, 75, 108, 191, 241, 161, 3, 92, 204, 110, 176, 86, 251, 210, 218, 108, 159, 237, 143, 246, 248, 202, 14, 89, 187, 125, 101, 29, 246, 181, 255, 211, 63, 181, 113, 251, 59, 108, 145, 25, 135, 163, 194, 125, 163, 209, 99, 60, 214, 139, 189, 164, 72, 188, 81, 166, 195, 80, 197, 118, 178, 247, 4, 188, 218, 237, 36, 91, 158, 168, 221, 0, 206, 155, 164, 188, 252, 54, 131, 191, 190, 187, 79, 103, 117, 95, 78, 219, 108, 195, 155, 133, 127, 129, 193, 159, 230, 24, 118, 14, 177, 59, 121, 46, 235, 229, 18, 125, 156, 192, 106, 145, 116, 245, 72, 96, 227, 209, 112, 69, 89, 94, 90, 92, 152, 31, 204, 205, 246, 123, 221, 142, 220, 110, 53, 27, 245, 90, 85, 170, 136, 229, 82, 177, 144, 207, 101, 51, 66, 58, 149, 76, 56, 44, 174, 94, 185, 112, 190, 29, 156, 131, 179, 254, 153, 99, 135, 90, 110, 179, 81, 175, 86, 202, 165, 223, 249, 49, 89, 164, 70, 162, 19, 240, 86, 24, 131, 132, 120, 112, 245, 10, 151, 199, 146, 190, 221, 121, 105, 9, 161, 65, 30, 115, 220, 144, 107, 195, 96, 48, 21, 134, 152, 144, 241, 181, 99, 32, 126, 195, 12, 130, 104, 106, 195, 38, 234, 132, 129, 186, 252, 9, 121, 178, 150, 23, 38, 6, 255, 222, 192, 199, 244, 229, 172, 178, 208, 215, 247, 209, 28, 247, 173, 147, 173, 185, 246, 32, 212, 155, 125, 223, 169, 40, 7, 74, 123, 57, 37, 134, 31, 36, 86, 154, 254, 119, 32, 205, 170, 149, 30, 244, 214, 43, 208, 73, 178, 74, 245, 206, 87, 197, 84, 188, 0, 91, 25, 189, 240, 140, 246, 58, 187, 32, 31, 93, 162, 132, 40, 191, 30, 52, 238, 150, 241, 26, 206, 28, 9, 178, 239, 249, 190, 238, 109, 24, 98, 3, 250, 75, 90, 73, 143, 247, 135, 98, 161, 135, 197, 22, 62, 218, 195, 148, 201, 14, 207, 174, 236, 121, 51, 118, 201, 138, 185, 92, 91, 131, 181, 248, 181, 66, 39, 126, 163, 176, 117, 164, 181, 95, 97, 235, 50, 94, 132, 190, 140, 124, 242, 79, 237, 233, 114, 29, 175, 220, 198, 36, 94, 22, 190, 58, 154, 219, 110, 72, 180, 246, 27, 133, 98, 62, 112, 129, 219, 255, 144, 26, 216, 255, 140, 24, 163, 130, 59, 195, 119, 73, 200, 122, 72, 231, 148, 255, 46, 209, 11, 33, 52, 214, 170, 8, 15, 109, 234, 142, 199, 111, 231, 43, 219, 158, 93, 176, 89, 173, 102, 183, 164, 225, 72, 102, 20, 210, 254, 233, 92, 118, 60, 12, 223, 104, 116, 77, 66, 31, 105, 8, 18, 195, 185, 8, 15, 206, 190, 154, 244, 178, 45, 202, 147, 184, 35, 151, 31, 249, 28, 252, 7, 158, 223, 34, 29, 209, 204, 50, 3, 193, 98, 15, 11, 134, 110, 241, 125, 56, 214, 239, 140, 5, 209, 222, 174, 193, 116, 86, 93, 17, 47, 226, 125, 67, 196, 245, 203, 26, 153, 33, 152, 179, 55, 239, 240, 226, 156, 148, 242, 137, 24, 240, 203, 128, 104, 94, 89, 204, 5, 195, 84, 92, 142, 80, 236, 196, 152, 174, 32, 143, 223, 183, 80, 24, 92, 53, 222, 255, 249, 96, 15, 180, 248, 195, 235, 154, 197, 193, 209, 241, 142, 62, 241, 124, 27, 11, 204, 12, 101, 12, 115, 237, 115, 11, 253, 173, 124, 131, 79, 209, 253, 12, 116, 183, 14, 240, 135, 80, 171, 215, 197, 173, 149, 32, 77, 151, 248, 65, 114, 12, 211, 21, 222, 235, 192, 193, 101, 48, 194, 100, 129, 155, 69, 255, 166, 93, 196, 142, 235, 148, 217, 141, 235, 206, 230, 216, 236, 173, 163, 190, 85, 183, 193, 235, 176, 133, 135, 160, 235, 100, 144, 175, 75, 142, 230, 21, 45, 161, 223, 24, 15, 245, 144, 152, 213, 222, 29, 53, 25, 95, 49, 46, 45, 226, 64, 22, 16, 233, 5, 42, 187, 75, 110, 191, 69, 118, 135, 123, 223, 222, 38, 119, 136, 238, 83, 37, 28, 233, 41, 116, 218, 124, 112, 106, 109, 3, 207, 24, 111, 13, 185, 217, 224, 202, 243, 81, 104, 164, 177, 6, 181, 174, 241, 162, 161, 164, 139, 127, 24, 4, 239, 28, 141, 153, 215, 88, 80, 209, 60, 68, 179, 47, 213, 3, 137, 224, 204, 249, 222, 45, 23, 72, 126, 22, 186, 94, 215, 142, 249, 0, 75, 65, 105, 98, 149, 121, 142, 94, 80, 110, 195, 231, 225, 77, 25, 186, 79, 178, 53, 67, 138, 150, 100, 221, 108, 1, 60, 216, 58, 45, 215, 195, 212, 35, 101, 188, 248, 71, 189, 198, 229, 122, 159, 28, 198, 211, 220, 117, 222, 175, 74, 189, 129, 80, 32, 212, 142, 56, 171, 83, 245, 124, 173, 7, 196, 187, 98, 99, 30, 151, 128, 57, 117, 9, 220, 194, 96, 9, 113, 44, 102, 189, 139, 44, 232, 113, 147, 234, 99, 222, 223, 195, 21, 172, 131, 134, 196, 138, 197, 140, 210, 17, 96, 66, 99, 11, 80, 208, 244, 194, 101, 195, 11, 163, 2, 52, 222, 181, 144, 248, 209, 66, 111, 131, 90, 193, 240, 114, 76, 158, 51, 47, 236, 158, 14, 82, 29, 25, 242, 174, 147, 219, 18, 68, 243, 118, 21, 15, 134, 78, 130, 44, 24, 34, 241, 229, 134, 120, 208, 242, 114, 2, 4, 246, 12, 132, 177, 114, 19, 118, 117, 155, 9, 17, 212, 65, 242, 136, 91, 25, 134, 107, 210, 114, 234, 39, 76, 144, 87, 226, 207, 189, 79, 182, 108, 63, 64, 34, 26, 45, 116, 141, 222, 140, 17, 105, 6, 116, 123, 214, 93, 166, 219, 243, 241, 12, 187, 46, 33, 124, 123, 65, 125, 195, 40, 235, 153, 174, 206, 206, 205, 88, 93, 194, 5, 32, 136, 213, 125, 253, 45, 241, 90, 224, 141, 57, 160, 210, 67, 237, 237, 138, 21, 164, 148, 139, 122, 252, 201, 234, 152, 146, 185, 173, 210, 14, 2, 204, 146, 187, 34, 181, 207, 38, 12, 202, 185, 155, 130, 201, 224, 92, 66, 138, 10, 223, 5, 25, 129, 238, 52, 81, 201, 139, 146, 40, 139, 26, 171, 51, 47, 163, 83, 234, 27, 28, 251, 19, 37, 80, 70, 114, 164, 70, 235, 180, 77, 210, 204, 220, 202, 152, 166, 153, 199, 245, 8, 105, 26, 9, 173, 248, 190, 69, 25, 202, 139, 47, 213, 58, 37, 248, 69, 234, 106, 162, 219, 121, 245, 138, 60, 150, 64, 84, 94, 98, 201, 215, 60, 166, 227, 51, 157, 88, 163, 131, 110, 157, 28, 65, 22, 212, 61, 20, 41, 60, 35, 200, 210, 41, 25, 101, 133, 26, 86, 96, 189, 139, 85, 232, 206, 79, 60, 207, 62, 159, 40, 144, 162, 133, 254, 17, 250, 140, 76, 177, 216, 155, 201, 128, 132, 147, 95, 41, 31, 92, 228, 39, 126, 142, 187, 239, 176, 162, 190, 124, 185, 71, 235, 254, 27, 218, 56, 32, 128, 2, 1, 236, 233, 134, 6, 0, 209, 57, 164, 166, 52, 84, 251, 236, 63, 3, 7, 127, 3, 192, 217, 111, 128, 109, 63, 14, 96, 211, 171, 192, 211, 47, 0, 104, 230, 126, 66, 39, 159, 31, 125, 140, 57, 63, 114, 19, 68, 125, 130, 1, 44, 15, 7, 9, 5, 1, 179, 103, 178, 18, 145, 140, 82, 137, 71, 8, 233, 109, 118, 36, 2, 228, 67, 56, 89, 208, 53, 211, 13, 140, 166, 101, 181, 233, 133, 199, 55, 13, 154, 39, 126, 54, 4, 12, 10, 176, 73, 163, 35, 26, 145, 232, 83, 118, 139, 236, 147, 205, 121, 81, 238, 102, 65, 54, 242, 25, 0, 4, 164, 205, 158, 71, 83, 152, 125, 230, 151, 0, 28, 24, 108, 187, 136, 7, 46, 139, 26, 79, 2, 116, 75, 178, 216, 32, 151, 132, 232, 67, 68, 17, 230, 201, 37, 30, 73, 162, 192, 210, 144, 44, 150, 146, 198, 145, 195, 30, 201, 55, 23, 154, 169, 152, 104, 151, 232, 211, 99, 42, 150, 134, 6, 104, 177, 17, 16, 102, 204, 209, 132, 15, 165, 50, 183, 157, 44, 109, 181, 228, 64, 246, 73, 97, 233, 83, 215, 47, 214, 108, 65, 138, 140, 49, 185, 205, 101, 59, 74, 134, 11, 127, 110, 45, 206, 226, 52, 144, 41, 107, 162, 65, 90, 140, 248, 236, 10, 153, 199, 144, 76, 136, 116, 16, 114, 203, 174, 132, 69, 116, 94, 18, 96, 86, 29, 206, 76, 72, 243, 116, 79, 78, 134, 96, 110, 252, 145, 187, 129, 151, 31, 230, 14, 243, 225, 180, 211, 252, 233, 207, 223, 197, 118, 241, 107, 211, 49, 71, 141, 76, 205, 204, 24, 55, 235, 5, 210, 157, 48, 136, 86, 186, 104, 216, 171, 87, 130, 236, 20, 66, 11, 38, 16, 160, 235, 157, 186, 173, 26, 23, 179, 201, 160, 172, 76, 196, 171, 254, 243, 206, 117, 34, 147, 48, 252, 2, 88, 219, 164, 1, 80, 233, 32, 118, 227, 6, 219, 32, 222, 145, 99, 242, 171, 70, 228, 209, 18, 231, 103, 211, 76, 48, 180, 116, 29, 77, 162, 33, 245, 151, 57, 97, 71, 242, 27, 29, 153, 176, 237, 43, 10, 209, 43, 128, 210, 117, 213, 51, 55, 98, 93, 71, 6, 80, 185, 246, 83, 135, 65, 1, 230, 21, 177, 65, 209, 57, 147, 239, 59, 159, 171, 116, 115, 108, 224, 140, 21, 145, 14, 10, 1, 203, 158, 116, 7, 119, 187, 157, 61, 123, 91, 213, 1, 22, 168, 5, 180, 207, 226, 189, 135, 162, 33, 0, 68, 228, 130, 204, 178, 158, 56, 199, 49, 238, 184, 190, 140, 96, 14, 87, 225, 53, 247, 216, 3, 134, 60, 201, 197, 114, 187, 47, 139, 140, 18, 161, 18, 154, 225, 182, 215, 161, 32, 162, 51, 81, 33, 149, 121, 132, 73, 213, 224, 164, 105, 57, 175, 91, 237, 123, 59, 55, 48, 99, 236, 10, 206, 238, 101, 26, 28, 228, 110, 170, 50, 186, 227, 87, 165, 69, 167, 99, 118, 187, 140, 3, 25, 139, 85, 73, 47, 118, 102, 26, 135, 171, 228, 229, 142, 32, 113, 149, 14, 32, 215, 87, 87, 180, 113, 14, 36, 17, 40, 165, 70, 38, 166, 134, 90, 19, 239, 225, 149, 183, 10, 46, 64, 69, 179, 53, 166, 115, 28, 174, 19, 103, 180, 224, 89, 114, 26, 1, 55, 36, 95, 48, 31, 3, 190, 150, 81, 6, 119, 113, 130, 241, 39, 114, 108, 246, 223, 219, 239, 171, 223, 135, 203, 127, 25, 204, 54, 48, 87, 32, 153, 164, 172, 138, 226, 91, 236, 31, 211, 240, 17, 182, 80, 106, 236, 210, 48, 88, 64, 135, 5, 7, 231, 115, 46, 206, 97, 12, 163, 140, 174, 179, 210, 135, 112, 172, 57, 143, 237, 56, 150, 18, 172, 235, 66, 184, 56, 159, 32, 143, 64, 232, 99, 199, 128, 90, 234, 20, 135, 157, 195, 126, 201, 103, 207, 146, 83, 41, 209, 205, 166, 117, 228, 200, 117, 230, 113, 224, 222, 15, 131, 202, 228, 79, 60, 222, 93, 157, 151, 251, 52, 173, 107, 78, 119, 151, 222, 155, 11, 206, 250, 122, 120, 49, 97, 64, 13, 163, 153, 2, 186, 220, 169, 108, 60, 217, 117, 143, 133, 196, 215, 36, 72, 123, 137, 245, 187, 11, 202, 204, 186, 176, 60, 13, 65, 179, 72, 112, 66, 251, 246, 60, 190, 12, 12, 232, 1, 141, 105, 49, 154, 177, 190, 43, 15, 56, 12, 55, 153, 17, 73, 174, 5, 16, 214, 10, 43, 35, 157, 184, 78, 40, 44, 32, 67, 37, 195, 42, 172, 34, 185, 169, 89, 20, 58, 218, 124, 158, 79, 69, 74, 141, 123, 10, 79, 223, 89, 232, 190, 205, 126, 145, 212, 195, 52, 229, 201, 206, 202, 154, 196, 213, 235, 86, 99, 41, 146, 84, 188, 188, 131, 121, 169, 9, 166, 191, 176, 240, 143, 200, 28, 22, 39, 247, 97, 126, 80, 69, 117, 92, 190, 161, 214, 228, 191, 56, 167, 15, 228, 192, 165, 35, 164, 146, 234, 236, 217, 198, 9, 106, 114, 138, 76, 113, 149, 226, 224, 56, 58, 24, 134, 163, 65, 60, 62, 74, 14, 71, 43, 141, 198, 97, 101, 64, 43, 58, 46, 11, 244, 253, 113, 99, 180, 144, 0, 2, 18, 157, 95, 27, 199, 34, 243, 61, 231, 153, 222, 223, 24, 158, 185, 239, 25, 11, 55, 139, 218, 5, 124, 69, 139, 120, 193, 253, 30, 45, 26, 169, 229, 70, 160, 225, 228, 190, 235, 8, 193, 154, 202, 87, 221, 199, 222, 4, 97, 174, 86, 158, 228, 235, 4, 249, 146, 205, 27, 98, 73, 36, 69, 78, 23, 133, 91, 172, 157, 2, 168, 173, 47, 101, 87, 117, 55, 106, 84, 226, 65, 232, 179, 241, 212, 66, 119, 240, 99, 219, 243, 246, 25, 41, 65, 140, 243, 65, 169, 192, 219, 110, 107, 176, 72, 178, 190, 117, 156, 128, 173, 47, 108, 93, 12, 96, 45, 39, 167, 87, 149, 107, 44, 106, 212, 148, 165, 56, 151, 170, 168, 222, 228, 10, 112, 123, 13, 141, 212, 166, 19, 55, 141, 32, 206, 227, 178, 106, 68, 165, 125, 202, 104, 115, 10, 210, 126, 98, 193, 60, 148, 0, 118, 249, 61, 124, 23, 14, 188, 212, 164, 251, 246, 103, 250, 48, 67, 129, 155, 183, 68, 37, 38, 251, 198, 119, 110, 99, 10, 235, 197, 43, 1, 158, 221, 91, 229, 40, 201, 128, 139, 165, 96, 40, 40, 117, 104, 94, 148, 3, 198, 126, 124, 86, 99, 241, 198, 17, 155, 97, 2, 196, 227, 122, 203, 247, 188, 206, 179, 154, 198, 115, 229, 40, 249, 27, 255, 142, 122, 206, 168, 59, 32, 49, 233, 217, 232, 83, 201, 242, 82, 12, 196, 92, 86, 137, 107, 150, 217, 33, 151, 146, 171, 70, 182, 180, 173, 243, 30, 105, 17, 188, 39, 80, 149, 97, 13, 207, 61, 153, 152, 203, 102, 225, 173, 129, 116, 248, 221, 179, 122, 45, 128, 174, 178, 31, 23, 13, 141, 93, 21, 235, 150, 50, 5, 237, 144, 190, 206, 162, 65, 248, 254, 65, 224, 104, 33, 175, 235, 146, 176, 107, 61, 182, 93, 76, 252, 24, 45, 132, 157, 104, 248, 175, 102, 248, 10, 180, 113, 154, 107, 212, 103, 225, 226, 123, 104, 96, 97, 158, 21, 44, 220, 177, 16, 100, 244, 16, 153, 62, 138, 101, 47, 121, 69, 190, 130, 214, 162, 187, 165, 168, 26, 90, 31, 203, 232, 196, 138, 162, 2, 236, 212, 241, 234, 2, 179, 77, 204, 223, 4, 178, 129, 9, 10, 247, 245, 182, 60, 16, 65, 119, 158, 19, 155, 13, 14, 167, 238, 36, 246, 158, 234, 51, 193, 81, 2, 203, 24, 247, 28, 34, 143, 161, 200, 42, 239, 148, 153, 33, 190, 198, 62, 104, 105, 229, 250, 13, 235, 45, 186, 112, 43, 55, 188, 252, 69, 120, 77, 25, 167, 149, 89, 213, 216, 29, 162, 179, 207, 37, 203, 63, 163, 87, 174, 245, 254, 62, 167, 30, 24, 128, 124, 133, 126, 124, 95, 159, 45, 245, 234, 204, 156, 174, 204, 82, 242, 179, 215, 46, 121, 153, 233, 239, 145, 95, 255, 146, 246, 150, 22, 3, 58, 53, 146, 82, 22, 25, 209, 104, 82, 61, 117, 155, 41, 141, 73, 123, 24, 72, 157, 156, 70, 243, 189, 114, 10, 2, 244, 220, 197, 14, 36, 81, 218, 189, 235, 59, 75, 41, 12, 151, 58, 238, 82, 47, 216, 45, 215, 113, 33, 9, 171, 92, 47, 228, 70, 102, 225, 243, 71, 188, 180, 181, 106, 208, 189, 201, 77, 128, 127, 232, 82, 114, 24, 43, 185, 166, 204, 41, 197, 84, 42, 23, 95, 15, 132, 59, 37, 128, 59, 120, 166, 36, 93, 232, 172, 145, 71, 161, 212, 149, 227, 132, 169, 19, 212, 45, 106, 19, 46, 45, 88, 51, 110, 139, 17, 8, 191, 137, 126, 103, 127, 184, 89, 196, 211, 7, 166, 87, 253, 179, 47, 118, 18, 92, 88, 23, 196, 146, 185, 120, 134, 229, 18, 84, 231, 144, 247, 53, 36, 219, 147, 22, 73, 226, 229, 203, 219, 201, 231, 81, 216, 230, 61, 111, 102, 227, 206, 254, 202, 2, 245, 197, 217, 49, 59, 213, 243, 80, 33, 209, 15, 141, 74, 10, 174, 248, 28, 49, 236, 93, 128, 153, 95, 50, 128, 180, 81, 94, 219, 36, 38, 77, 77, 209, 209, 140, 55, 97, 249, 137, 172, 163, 180, 85, 84, 145, 77, 212, 71, 231, 29, 238, 0, 93, 49, 66, 94, 47, 117, 79, 9, 83, 150, 148, 80, 75, 67, 42, 225, 21, 167, 176, 75, 202, 143, 225, 110, 95, 248, 167, 45, 53, 106, 192, 245, 138, 240, 31, 58, 13, 203, 16, 250, 95, 234, 222, 14, 224, 39, 154, 117, 127, 34, 76, 18, 6, 3, 218, 13, 54, 74, 106, 19, 187, 74, 252, 198, 19, 119, 76, 198, 87, 42, 201, 13, 76, 121, 221, 223, 175, 139, 244, 160, 152, 232, 185, 103, 217, 21, 83, 115, 229, 179, 102, 21, 209, 41, 171, 51, 51, 28, 155, 229, 169, 158, 207, 180, 111, 174, 254, 231, 109, 91, 63, 152, 184, 229, 31, 241, 42, 36, 65, 207, 115, 207, 120, 215, 46, 138, 128, 118, 150, 114, 97, 249, 80, 106, 210, 92, 64, 165, 90, 70, 66, 157, 4, 127, 145, 14, 83, 85, 96, 67, 88, 1, 172, 175, 141, 68, 225, 238, 110, 45, 146, 173, 252, 100, 124, 19, 27, 115, 128, 188, 225, 29, 72, 140, 27, 117, 15, 167, 218, 4, 2, 27, 46, 22, 101, 153, 153, 94, 94, 140, 5, 34, 1, 131, 158, 0, 3, 38, 128, 52, 24, 91, 216, 91, 121, 133, 8, 57, 119, 218, 158, 2, 226, 36, 50, 158, 165, 102, 195, 138, 32, 116, 12, 174, 5, 87, 146, 26, 16, 199, 176, 107, 197, 75, 6, 205, 109, 157, 80, 163, 145, 31, 194, 103, 44, 220, 34, 165, 5, 169, 216, 131, 20, 182, 27, 2, 130, 104, 110, 173, 196, 0, 43, 76, 26, 105, 170, 63, 0, 117, 125, 146, 48, 81, 72, 248, 24, 175, 2, 249, 157, 132, 71, 224, 46, 28, 28, 197, 69, 186, 143, 9, 174, 180, 53, 51, 200, 211, 170, 189, 88, 207, 43, 195, 18, 198, 191, 161, 11, 32, 217, 129, 40, 51, 78, 155, 9, 208, 234, 217, 52, 93, 68, 179, 147, 112, 126, 252, 57, 22, 114, 18, 72, 62, 178, 198, 29, 230, 98, 72, 35, 82, 212, 54, 238, 23, 183, 229, 183, 238, 97, 95, 66, 41, 13, 92, 170, 213, 232, 158, 97, 0, 231, 93, 172, 125, 100, 202, 238, 99, 17, 154, 195, 2, 244, 9, 143, 134, 87, 118, 23, 95, 141, 255, 205, 240, 65, 136, 141, 61, 99, 224, 63, 165, 69, 238, 181, 46, 33, 217, 82, 238, 71, 67, 75, 166, 146, 80, 216, 254, 75, 59, 245, 173, 150, 159, 166, 242, 5, 31, 229, 165, 157, 252, 241, 127, 50, 78, 161, 18, 14, 43, 243, 140, 188, 36, 249, 202, 31, 97, 124, 204, 254, 52, 212, 235, 246, 237, 179, 120, 49, 79, 78, 14, 62, 235, 115, 169, 189, 210, 50, 211, 16, 97, 49, 191, 141, 198, 30, 249, 212, 158, 163, 7, 36, 253, 26, 217, 200, 140, 71, 53, 180, 229, 17, 178, 87, 71, 27, 15, 100, 76, 192, 217, 198, 239, 254, 98, 158, 156, 88, 35, 152, 197, 139, 185, 247, 65, 222, 229, 94, 89, 47, 20, 106, 125, 248, 186, 94, 201, 165, 212, 37, 141, 168, 151, 48, 240, 25, 20, 36, 19, 193, 191, 215, 226, 94, 0, 234, 252, 115, 16, 153, 193, 62, 114, 180, 200, 37, 191, 112, 172, 142, 80, 114, 30, 11, 240, 47, 183, 201, 217, 206, 67, 45, 5, 134, 26, 126, 89, 130, 156, 151, 12, 141, 73, 156, 20, 144, 224, 100, 235, 160, 237, 240, 197, 181, 220, 86, 113, 170, 135, 76, 41, 17, 123, 63, 218, 131, 1, 220, 116, 196, 254, 119, 198, 64, 148, 173, 113, 150, 175, 199, 185, 92, 253, 235, 149, 190, 82, 161, 150, 255, 228, 133, 210, 229, 11, 84, 28, 69, 234, 188, 28, 190, 228, 48, 103, 74, 31, 19, 149, 72, 126, 136, 48, 42, 111, 96, 96, 160, 78, 73, 50, 104, 40, 78, 194, 17, 228, 63, 243, 9, 25, 25, 44, 242, 4, 187, 217, 219, 235, 2, 145, 36, 146, 197, 163, 180, 90, 149, 5, 102, 157, 85, 229, 156, 195, 56, 241, 216, 77, 162, 3, 101, 65, 146, 40, 116, 201, 107, 197, 109, 78, 241, 11, 232, 88, 206, 232, 181, 141, 73, 92, 251, 220, 214, 192, 18, 242, 215, 67, 233, 82, 77, 202, 134, 156, 115, 4, 123, 45, 211, 66, 224, 57, 162, 17, 123, 6, 248, 117, 249, 66, 149, 65, 29, 134, 228, 114, 96, 83, 86, 83, 152, 229, 78, 138, 103, 136, 23, 123, 216, 138, 128, 175, 241, 26, 0, 24, 213, 164, 171, 93, 8, 184, 206, 214, 50, 248, 133, 200, 46, 250, 35, 133, 65, 172, 93, 162, 75, 102, 223, 240, 10, 12, 212, 218, 96, 46, 82, 58, 86, 10, 143, 191, 135, 120, 84, 171, 79, 232, 130, 224, 215, 237, 30, 3, 223, 208, 98, 24, 224, 205, 9, 194, 36, 79, 251, 158, 55, 33, 159, 108, 29, 94, 10, 92, 29, 60, 34, 38, 91, 132, 227, 20, 149, 49, 236, 167, 152, 194, 90, 149, 130, 114, 55, 43, 9, 2, 222, 226, 86, 221, 9, 145, 1, 19, 184, 157, 114, 107, 198, 252, 201, 127, 251, 163, 184, 134, 135, 82, 22, 41, 181, 184, 61, 161, 33, 99, 37, 47, 139, 87, 192, 78, 194, 165, 150, 1, 70, 59, 20, 84, 75, 232, 100, 60, 171, 112, 232, 70, 248, 142, 22, 140, 191, 207, 8, 164, 17, 164, 84, 4, 206, 154, 135, 107, 116, 84, 60, 183, 224, 100, 202, 78, 27, 234, 209, 103, 29, 186, 29, 18, 245, 69, 97, 10, 83, 235, 159, 208, 58, 30, 61, 49, 101, 117, 227, 78, 202, 2, 232, 165, 208, 67, 33, 95, 197, 47, 234, 51, 174, 230, 24, 128, 142, 79, 150, 199, 6, 236, 117, 176, 70, 195, 188, 147, 194, 214, 185, 34, 195, 145, 49, 75, 2, 217, 98, 68, 96, 12, 24, 11, 70, 91, 204, 172, 78, 197, 109, 110, 41, 10, 153, 87, 153, 142, 84, 66, 23, 13, 92, 129, 218, 73, 239, 25, 95, 152, 70, 212, 228, 46, 9, 1, 14, 253, 146, 81, 208, 156, 65, 154, 229, 230, 255, 154, 75, 27, 224, 3, 40, 37, 192, 157, 179, 92, 133, 167, 60, 209, 239, 146, 20, 117, 121, 225, 205, 14, 48, 122, 125, 188, 238, 173, 7, 84, 228, 0, 42, 90, 102, 21, 127, 218, 186, 13, 47, 45, 29, 110, 156, 5, 29, 187, 13, 204, 22, 60, 40, 204, 145, 67, 162, 16, 65, 14, 237, 148, 24, 68, 23, 149, 216, 155, 110, 145, 223, 88, 147, 197, 115, 255, 50, 127, 175, 153, 231, 240, 3, 102, 24, 64, 217, 112, 64, 93, 150, 113, 16, 100, 115, 221, 108, 83, 225, 254, 139, 119, 121, 212, 125, 40, 197, 173, 19, 182, 206, 176, 149, 243, 133, 84, 95, 72, 226, 10, 195, 179, 56, 98, 2, 153, 190, 84, 15, 192, 23, 250, 98, 229, 225, 100, 57, 125, 162, 137, 64, 166, 56, 247, 213, 7, 47, 140, 117, 125, 42, 148, 76, 208, 194, 237, 17, 41, 188, 201, 92, 115, 11, 187, 158, 198, 221, 21, 248, 2, 92, 19, 48, 185, 220, 7, 250, 0, 18, 23, 224, 209, 241, 157, 74, 240, 70, 141, 30, 244, 137, 50, 104, 189, 141, 192, 92, 141, 34, 159, 215, 242, 95, 51, 78, 160, 43, 232, 172, 149, 112, 220, 246, 161, 104, 159, 52, 38, 1, 92, 51, 60, 31, 16, 162, 194, 55, 225, 202, 16, 27, 15, 156, 167, 91, 190, 71, 17, 86, 137, 125, 150, 28, 29, 130, 88, 40, 233, 204, 22, 89, 99, 177, 71, 90, 195, 21, 47, 135, 189, 18, 94, 0, 209, 26, 45, 73, 70, 93, 70, 246, 214, 48, 109, 20, 23, 31, 242, 48, 238, 85, 244, 132, 21, 6, 82, 44, 185, 11, 226, 2, 174, 15, 19, 85, 111, 234, 193, 121, 11, 151, 116, 128, 87, 26, 89, 110, 216, 165, 129, 231, 27, 185, 141, 157, 33, 201, 237, 159, 107, 109, 227, 238, 200, 213, 204, 223, 60, 199, 215, 225, 131, 78, 107, 246, 240, 237, 175, 163, 192, 221, 64, 65, 54, 129, 79, 211, 50, 135, 247, 157, 138, 59, 39, 90, 145, 163, 209, 105, 151, 207, 178, 153, 110, 248, 119, 153, 223, 253, 248, 210, 255, 211, 132, 31, 121, 29, 217, 14, 187, 228, 244, 20, 73, 249, 66, 88, 255, 252, 190, 185, 231, 177, 123, 110, 238, 222, 211, 247, 93, 242, 238, 106, 118, 36, 211, 111, 86, 98, 165, 138, 236, 206, 123, 75, 61, 95, 9, 24, 104, 81, 227, 72, 137, 207, 19, 242, 245, 163, 78, 171, 230, 109, 244, 4, 178, 46, 155, 43, 86, 164, 126, 115, 90, 45, 227, 143, 239, 17, 169, 147, 179, 87, 115, 240, 105, 118, 113, 253, 9, 40, 233, 71, 105, 38, 7, 89, 216, 4, 145, 45, 58, 242, 14, 104, 187, 238, 0, 233, 50, 153, 118, 247, 243, 211, 185, 216, 17, 184, 247, 45, 213, 244, 30, 140, 206, 54, 232, 162, 173, 19, 159, 61, 44, 234, 134, 29, 106, 30, 49, 141, 253, 207, 150, 122, 245, 180, 143, 122, 216, 9, 5, 111, 249, 188, 194, 244, 129, 124, 160, 25, 136, 158, 20, 229, 102, 13, 147, 18, 65, 73, 189, 116, 233, 59, 249, 67, 118, 70, 152, 247, 240, 86, 205, 14, 223, 94, 118, 102, 24, 64, 167, 59, 137, 198, 228, 159, 163, 91, 228, 167, 228, 116, 21, 121, 220, 228, 145, 109, 177, 246, 168, 116, 226, 220, 99, 119, 197, 203, 83, 125, 230, 146, 231, 135, 7, 188, 106, 76, 2, 176, 138, 129, 155, 96, 54, 157, 85, 20, 183, 255, 234, 98, 58, 228, 21, 118, 197, 90, 251, 98, 20, 141, 241, 217, 237, 83, 91, 63, 232, 52, 206, 92, 198, 31, 238, 200, 35, 43, 175, 110, 96, 186, 114, 82, 251, 205, 165, 152, 208, 126, 173, 90, 132, 160, 186, 80, 89, 135, 59, 53, 243, 125, 153, 2, 61, 65, 91, 102, 212, 80, 242, 133, 3, 110, 215, 233, 3, 14, 171, 167, 154, 113, 110, 164, 87, 234, 114, 145, 168, 89, 136, 211, 173, 223, 231, 150, 109, 179, 168, 188, 147, 177, 76, 62, 216, 21, 150, 108, 132, 24, 248, 137, 69, 82, 217, 145, 50, 43, 213, 166, 181, 53, 166, 221, 85, 250, 130, 207, 197, 62, 159, 54, 19, 122, 78, 151, 224, 80, 197, 92, 122, 109, 122, 136, 11, 66, 219, 55, 225, 116, 145, 163, 110, 141, 53, 196, 112, 115, 152, 24, 42, 130, 78, 47, 207, 77, 157, 103, 243, 62, 92, 169, 133, 182, 192, 170, 29, 123, 135, 28, 26, 13, 238, 81, 71, 111, 221, 165, 61, 2, 51, 57, 27, 67, 37, 130, 201, 234, 179, 49, 97, 0, 170, 179, 218, 212, 233, 198, 97, 79, 181, 168, 112, 126, 46, 96, 19, 67, 71, 107, 120, 217, 56, 77, 125, 49, 14, 161, 171, 253, 172, 59, 22, 160, 199, 144, 88, 135, 85, 87, 79, 248, 77, 61, 198, 0, 100, 70, 128, 132, 81, 8, 177, 188, 172, 177, 109, 145, 16, 70, 80, 112, 172, 63, 85, 170, 14, 170, 51, 245, 114, 105, 34, 126, 80, 208, 145, 236, 121, 146, 136, 15, 227, 225, 227, 204, 178, 28, 165, 115, 167, 28, 224, 225, 136, 7, 199, 231, 199, 112, 52, 164, 113, 228, 38, 167, 24, 239, 143, 220, 141, 52, 47, 121, 43, 247, 178, 92, 188, 33, 187, 241, 206, 244, 222, 205, 83, 137, 155, 199, 103, 5, 138, 116, 207, 241, 17, 146, 197, 5, 167, 35, 149, 247, 95, 43, 195, 42, 233, 2, 253, 109, 58, 132, 236, 59, 184, 41, 95, 28, 126, 122, 249, 135, 2, 132, 47, 130, 46, 218, 242, 200, 103, 184, 250, 84, 6, 82, 185, 169, 176, 120, 9, 107, 235, 202, 20, 168, 188, 2, 94, 169, 184, 231, 130, 83, 175, 142, 252, 42, 84, 27, 54, 237, 141, 192, 193, 6, 166, 124, 60, 240, 140, 216, 247, 246, 135, 91, 182, 4, 39, 146, 5, 0, 10, 185, 203, 12, 180, 68, 8, 206, 165, 219, 136, 189, 42, 199, 201, 249, 180, 198, 206, 209, 25, 57, 250, 147, 116, 26, 236, 65, 118, 119, 162, 133, 21, 121, 91, 127, 253, 222, 62, 69, 29, 20, 92, 153, 206, 197, 149, 132, 38, 215, 156, 0, 222, 224, 99, 51, 37, 79, 253, 215, 175, 172, 235, 30, 231, 127, 11, 170, 174, 228, 197, 69, 210, 69, 36, 20, 190, 13, 120, 232, 56, 204, 14, 63, 16, 163, 127, 70, 14, 98, 82, 216, 147, 82, 76, 236, 254, 247, 146, 178, 116, 83, 146, 126, 58, 68, 201, 176, 15, 189, 123, 235, 0, 188, 176, 103, 95, 163, 51, 66, 115, 69, 152, 42, 74, 48, 9, 232, 196, 47, 239, 44, 0, 47, 249, 72, 21, 4, 189, 217, 192, 221, 37, 56, 189, 239, 199, 229, 178, 185, 111, 254, 9, 23, 51, 146, 20, 31, 210, 241, 201, 143, 6, 113, 66, 104, 18, 141, 118, 28, 221, 50, 38, 5, 31, 158, 228, 194, 21, 220, 189, 194, 116, 197, 167, 75, 90, 205, 103, 39, 46, 253, 100, 101, 40, 164, 201, 58, 15, 93, 241, 26, 157, 124, 63, 38, 39, 33, 29, 200, 129, 81, 150, 27, 176, 212, 183, 9, 38, 107, 248, 140, 184, 154, 158, 21, 187, 172, 177, 0, 231, 98, 40, 243, 33, 62, 140, 127, 189, 2, 167, 72, 244, 120, 68, 197, 225, 159, 209, 205, 141, 207, 193, 223, 204, 203, 8, 255, 122, 238, 228, 3, 11, 32, 222, 179, 103, 165, 209, 194, 146, 8, 158, 211, 142, 238, 235, 172, 254, 69, 71, 158, 204, 121, 249, 247, 74, 238, 216, 65, 255, 250, 32, 208, 47, 168, 77, 137, 83, 208, 49, 64, 32, 104, 20, 225, 218, 89, 0, 90, 12, 210, 22, 213, 69, 3, 123, 146, 102, 115, 41, 57, 236, 233, 117, 54, 211, 84, 20, 199, 185, 53, 57, 140, 58, 149, 25, 52, 233, 221, 129, 54, 85, 247, 194, 31, 53, 47, 202, 120, 123, 198, 223, 136, 223, 72, 0, 50, 234, 236, 186, 93, 111, 61, 37, 125, 134, 168, 31, 199, 116, 157, 165, 33, 10, 26, 145, 73, 33, 82, 216, 51, 248, 36, 89, 205, 219, 124, 192, 235, 139, 31, 236, 194, 193, 237, 18, 155, 215, 85, 239, 208, 171, 234, 90, 157, 174, 87, 23, 195, 209, 148, 139, 241, 17, 187, 0, 202, 151, 224, 71, 118, 113, 66, 87, 142, 96, 185, 245, 181, 218, 119, 130, 198, 68, 128, 180, 69, 7, 208, 173, 244, 211, 53, 159, 24, 92, 216, 3, 111, 249, 118, 2, 49, 226, 52, 65, 92, 134, 8, 121, 7, 225, 215, 31, 254, 20, 24, 241, 36, 67, 3, 109, 242, 239, 150, 234, 75, 167, 2, 81, 1, 142, 149, 122, 231, 21, 176, 77, 215, 114, 164, 109, 231, 76, 53, 215, 133, 211, 160, 179, 206, 149, 2, 183, 239, 111, 66, 28, 72, 165, 38, 10, 117, 182, 178, 92, 132, 20, 247, 103, 222, 119, 72, 241, 34, 96, 203, 144, 226, 66, 39, 137, 211, 46, 130, 59, 15, 205, 53, 100, 227, 185, 29, 148, 144, 213, 254, 91, 9, 25, 75, 251, 133, 79, 219, 104, 100, 240, 6, 121, 209, 49, 10, 7, 162, 120, 135, 135, 195, 54, 199, 172, 101, 9, 103, 204, 85, 235, 248, 162, 181, 55, 57, 231, 202, 6, 56, 106, 118, 78, 180, 182, 113, 202, 49, 211, 3, 86, 242, 104, 121, 91, 219, 208, 7, 172, 191, 125, 115, 246, 201, 37, 143, 38, 134, 241, 153, 153, 137, 235, 213, 31, 209, 179, 70, 200, 19, 131, 79, 55, 220, 55, 15, 171, 18, 243, 122, 171, 42, 86, 166, 38, 37, 207, 204, 195, 201, 242, 101, 76, 233, 201, 27, 175, 207, 43, 227, 33, 215, 35, 205, 144, 155, 168, 169, 58, 96, 142, 125, 152, 33, 13, 77, 184, 2, 21, 234, 109, 48, 171, 188, 232, 242, 156, 45, 236, 232, 1, 69, 206, 163, 171, 177, 182, 238, 157, 138, 61, 43, 61, 176, 52, 41, 167, 59, 168, 193, 45, 217, 50, 37, 101, 167, 111, 247, 67, 54, 50, 190, 6, 95, 179, 29, 249, 249, 127, 64, 19, 210, 100, 88, 130, 111, 145, 20, 48, 213, 103, 246, 193, 151, 4, 195, 41, 156, 200, 205, 222, 82, 255, 33, 57, 38, 78, 10, 65, 133, 3, 87, 171, 38, 187, 109, 2, 197, 146, 15, 60, 243, 200, 93, 82, 136, 108, 145, 10, 122, 129, 85, 151, 189, 13, 134, 245, 165, 65, 157, 132, 32, 212, 227, 17, 210, 165, 61, 196, 130, 100, 109, 173, 179, 61, 39, 103, 90, 223, 134, 132, 191, 125, 48, 189, 228, 231, 59, 153, 113, 227, 16, 252, 136, 201, 239, 109, 103, 141, 143, 195, 97, 32, 254, 247, 16, 248, 216, 83, 17, 221, 187, 212, 245, 211, 215, 8, 6, 62, 63, 59, 244, 42, 136, 27, 167, 242, 219, 53, 227, 123, 215, 184, 117, 181, 28, 230, 78, 100, 112, 130, 159, 23, 105, 175, 210, 120, 35, 63, 61, 14, 61, 163, 219, 26, 223, 213, 39, 70, 40, 24, 91, 238, 17, 222, 233, 96, 188, 172, 224, 203, 126, 95, 178, 80, 137, 90, 55, 16, 1, 244, 228, 63, 43, 9, 139, 88, 95, 118, 36, 192, 120, 203, 223, 42, 60, 135, 33, 48, 47, 47, 137, 71, 222, 63, 93, 35, 113, 85, 65, 85, 222, 94, 162, 218, 3, 109, 76, 126, 132, 39, 113, 241, 15, 22, 183, 32, 197, 13, 221, 16, 82, 76, 63, 11, 24, 166, 177, 72, 141, 110, 156, 101, 150, 160, 146, 59, 71, 42, 166, 116, 145, 253, 41, 38, 46, 48, 102, 241, 91, 92, 186, 86, 3, 105, 59, 200, 112, 213, 37, 231, 206, 253, 1, 248, 115, 46, 26, 28, 134, 71, 69, 41, 227, 60, 138, 255, 249, 222, 88, 142, 242, 63, 172, 17, 39, 242, 194, 144, 59, 101, 1, 120, 66, 208, 190, 147, 70, 9, 23, 191, 240, 29, 48, 121, 9, 252, 239, 84, 111, 234, 241, 214, 119, 127, 106, 140, 197, 200, 82, 2, 12, 133, 117, 42, 198, 153, 133, 177, 242, 99, 247, 110, 85, 100, 134, 82, 213, 7, 100, 175, 64, 213, 173, 52, 192, 89, 65, 168, 29, 220, 170, 246, 156, 86, 21, 174, 235, 11, 176, 137, 61, 81, 121, 53, 126, 121, 83, 14, 75, 91, 242, 198, 223, 154, 56, 78, 39, 69, 47, 41, 43, 73, 117, 42, 124, 211, 247, 18, 239, 123, 166, 192, 143, 180, 58, 102, 162, 199, 8, 143, 85, 193, 183, 47, 198, 225, 156, 30, 119, 217, 108, 54, 197, 205, 191, 10, 167, 31, 111, 241, 132, 36, 204, 45, 250, 55, 30, 57, 191, 8, 112, 215, 182, 206, 104, 130, 23, 58, 159, 194, 219, 176, 209, 88, 224, 147, 160, 2, 189, 136, 97, 168, 68, 224, 90, 95, 8, 82, 225, 229, 11, 215, 72, 241, 252, 62, 34, 92, 178, 248, 151, 202, 190, 173, 183, 225, 29, 116, 0, 115, 215, 68, 246, 2, 192, 203, 90, 129, 242, 109, 142, 61, 223, 10, 119, 223, 222, 107, 118, 120, 160, 121, 54, 186, 93, 124, 176, 77, 3, 202, 107, 187, 34, 223, 130, 86, 62, 222, 62, 199, 104, 232, 83, 72, 235, 17, 171, 129, 8, 218, 57, 57, 99, 163, 232, 240, 84, 222, 211, 187, 250, 35, 98, 164, 219, 125, 118, 69, 207, 85, 230, 143, 43, 137, 195, 0, 254, 221, 213, 85, 39, 190, 244, 230, 8, 200, 137, 165, 161, 44, 236, 71, 238, 25, 240, 50, 237, 158, 28, 9, 121, 247, 86, 250, 73, 91, 45, 221, 244, 210, 146, 22, 191, 94, 183, 185, 12, 94, 179, 4, 231, 131, 8, 92, 183, 78, 10, 20, 62, 162, 59, 82, 19, 118, 205, 130, 110, 61, 14, 238, 50, 205, 122, 148, 83, 181, 156, 114, 75, 74, 68, 107, 21, 166, 143, 3, 245, 103, 184, 15, 230, 76, 255, 149, 128, 118, 255, 2, 200, 157, 26, 243, 106, 125, 245, 161, 221, 117, 61, 109, 137, 234, 13, 150, 142, 195, 155, 60, 33, 10, 187, 188, 161, 252, 247, 6, 160, 63, 187, 88, 88, 217, 212, 18, 222, 191, 224, 190, 32, 253, 67, 30, 46, 252, 203, 189, 150, 137, 195, 8, 161, 118, 51, 73, 251, 71, 130, 107, 138, 156, 32, 47, 28, 47, 112, 97, 116, 0, 108, 184, 146, 25, 155, 154, 204, 141, 74, 18, 119, 37, 212, 238, 204, 244, 254, 175, 184, 157, 156, 99, 226, 85, 34, 111, 116, 85, 187, 166, 221, 181, 186, 87, 53, 202, 13, 228, 158, 4, 101, 193, 139, 216, 180, 197, 194, 29, 233, 152, 89, 61, 169, 244, 141, 150, 80, 116, 231, 13, 249, 0, 164, 242, 28, 156, 234, 8, 4, 232, 177, 75, 64, 254, 18, 225, 82, 224, 20, 60, 112, 131, 50, 86, 108, 237, 234, 0, 37, 233, 244, 10, 23, 20, 192, 223, 33, 112, 125, 89, 242, 134, 189, 181, 211, 122, 68, 127, 161, 208, 109, 134, 193, 92, 27, 151, 91, 234, 105, 223, 133, 61, 252, 13, 64, 74, 210, 14, 215, 203, 117, 171, 8, 0, 118, 87, 166, 121, 85, 80, 185, 40, 245, 72, 169, 206, 148, 12, 107, 21, 118, 126, 98, 97, 65, 226, 44, 96, 121, 224, 52, 179, 71, 151, 56, 6, 197, 91, 215, 177, 48, 179, 170, 137, 70, 106, 0, 23, 136, 70, 73, 240, 79, 198, 97, 190, 61, 139, 210, 18, 243, 64, 222, 234, 101, 46, 59, 240, 234, 48, 29, 21, 230, 174, 130, 221, 23, 11, 188, 242, 104, 166, 79, 234, 139, 100, 103, 104, 135, 58, 57, 29, 62, 192, 99, 28, 110, 89, 73, 187, 6, 180, 102, 197, 120, 5, 187, 48, 99, 242, 187, 180, 188, 237, 69, 90, 169, 59, 248, 191, 67, 253, 58, 113, 116, 72, 14, 231, 48, 12, 25, 146, 165, 159, 8, 234, 242, 3, 27, 209, 139, 67, 7, 71, 103, 79, 85, 217, 213, 39, 125, 4, 50, 62, 79, 171, 253, 250, 78, 158, 111, 188, 7, 226, 72, 129, 1, 117, 59, 139, 224, 170, 5, 237, 102, 184, 102, 153, 52, 12, 232, 211, 35, 60, 117, 61, 229, 249, 114, 105, 205, 24, 232, 228, 160, 132, 94, 236, 83, 191, 64, 95, 212, 40, 234, 161, 238, 7, 128, 247, 3, 39, 214, 60, 238, 84, 126, 24, 223, 129, 37, 239, 156, 215, 100, 151, 251, 109, 156, 78, 175, 39, 11, 136, 163, 55, 220, 73, 113, 190, 128, 139, 41, 38, 89, 56, 160, 135, 200, 170, 120, 84, 96, 102, 184, 9, 80, 123, 26, 102, 114, 163, 194, 47, 206, 211, 213, 78, 90, 155, 10, 232, 228, 139, 220, 172, 202, 149, 166, 139, 29, 36, 117, 63, 148, 46, 188, 188, 240, 226, 69, 189, 14, 161, 211, 40, 126, 34, 189, 40, 58, 83, 50, 85, 166, 70, 38, 111, 216, 45, 163, 162, 80, 195, 166, 88, 120, 203, 116, 8, 116, 95, 65, 254, 6, 233, 115, 235, 185, 218, 64, 40, 17, 223, 157, 218, 157, 26, 131, 121, 115, 210, 186, 193, 46, 28, 94, 83, 232, 192, 73, 28, 91, 81, 254, 214, 134, 97, 25, 28, 60, 106, 40, 145, 190, 23, 4, 186, 8, 91, 9, 33, 239, 195, 47, 216, 141, 252, 93, 35, 65, 103, 44, 102, 20, 248, 36, 236, 197, 254, 237, 106, 214, 216, 29, 63, 46, 200, 68, 9, 161, 129, 116, 17, 119, 236, 117, 78, 140, 207, 236, 197, 47, 187, 21, 88, 74, 254, 112, 26, 209, 26, 228, 249, 247, 235, 9, 150, 212, 197, 94, 86, 209, 240, 208, 133, 241, 42, 145, 30, 156, 101, 136, 226, 233, 185, 120, 5, 197, 127, 30, 190, 206, 144, 145, 218, 83, 165, 195, 133, 242, 3, 89, 100, 218, 7, 21, 212, 31, 135, 157, 225, 136, 16, 29, 156, 78, 221, 55, 227, 160, 41, 46, 75, 24, 188, 93, 72, 101, 54, 74, 188, 47, 246, 63, 226, 110, 84, 126, 248, 241, 32, 14, 94, 40, 154, 237, 26, 248, 180, 102, 231, 115, 246, 6, 58, 142, 153, 102, 127, 223, 40, 115, 191, 150, 244, 203, 207, 104, 236, 251, 25, 121, 71, 72, 24, 205, 251, 17, 99, 56, 228, 198, 193, 186, 176, 165, 160, 246, 234, 146, 101, 5, 111, 194, 171, 54, 211, 75, 132, 170, 73, 166, 251, 133, 63, 186, 4, 158, 60, 135, 22, 139, 244, 249, 178, 127, 18, 27, 73, 143, 227, 72, 116, 254, 64, 61, 161, 202, 198, 4, 60, 6, 141, 35, 161, 209, 120, 42, 10, 77, 36, 217, 106, 175, 224, 133, 85, 242, 80, 11, 187, 22, 228, 86, 95, 242, 246, 52, 160, 173, 133, 147, 250, 218, 0, 221, 148, 192, 153, 244, 253, 169, 101, 247, 102, 7, 214, 10, 144, 134, 58, 2, 186, 69, 56, 151, 219, 218, 255, 77, 40, 29, 115, 210, 180, 37, 231, 178, 151, 122, 39, 160, 171, 73, 75, 191, 72, 74, 12, 110, 218, 218, 62, 81, 186, 15, 120, 90, 96, 52, 112, 175, 21, 23, 159, 246, 177, 181, 139, 97, 52, 169, 106, 154, 188, 211, 24, 179, 84, 164, 222, 73, 245, 200, 4, 116, 210, 176, 161, 140, 128, 82, 33, 7, 199, 152, 5, 53, 179, 253, 245, 85, 89, 31, 23, 109, 225, 101, 113, 144, 102, 36, 84, 75, 5, 228, 38, 54, 104, 23, 11, 89, 39, 106, 251, 52, 12, 163, 15, 42, 15, 202, 176, 213, 103, 91, 83, 26, 197, 181, 39, 220, 30, 86, 45, 42, 77, 218, 69, 34, 150, 40, 109, 223, 186, 225, 156, 131, 170, 253, 55, 216, 154, 147, 47, 83, 154, 157, 245, 4, 6, 12, 175, 91, 39, 126, 100, 123, 46, 181, 7, 121, 68, 7, 193, 196, 167, 130, 131, 34, 147, 144, 208, 80, 2, 134, 20, 77, 62, 16, 66, 185, 28, 239, 159, 151, 17, 11, 39, 201, 240, 156, 202, 40, 249, 123, 20, 242, 116, 245, 131, 152, 36, 68, 59, 162, 253, 115, 115, 87, 235, 84, 125, 118, 104, 233, 219, 98, 231, 8, 2, 57, 14, 124, 229, 82, 143, 189, 163, 77, 220, 12, 158, 243, 202, 139, 242, 20, 81, 125, 64, 182, 106, 99, 172, 255, 219, 159, 209, 202, 229, 64, 225, 108, 118, 211, 108, 90, 47, 230, 195, 213, 21, 102, 42, 165, 123, 6, 93, 87, 48, 206, 173, 32, 69, 81, 56, 158, 93, 51, 147, 218, 131, 158, 184, 186, 198, 44, 164, 245, 205, 162, 113, 5, 115, 220, 162, 228, 140, 194, 177, 5, 1, 6, 127, 249, 128, 182, 21, 222, 249, 15, 89, 53, 91, 93, 246, 127, 170, 224, 5, 50, 251, 28, 17, 111, 147, 107, 240, 242, 89, 109, 91, 38, 182, 3, 155, 213, 150, 149, 215, 33, 222, 245, 17, 254, 22, 105, 49, 165, 171, 100, 122, 120, 200, 101, 176, 54, 73, 60, 9, 77, 140, 193, 226, 8, 24, 44, 142, 140, 66, 227, 169, 24, 12, 142, 162, 235, 178, 143, 231, 219, 135, 223, 226, 131, 226, 57, 224, 141, 235, 177, 31, 66, 110, 175, 254, 198, 134, 20, 93, 61, 254, 123, 253, 23, 121, 25, 34, 150, 245, 187, 190, 62, 102, 143, 181, 96, 204, 254, 178, 228, 168, 93, 54, 212, 132, 150, 58, 10, 119, 31, 152, 207, 169, 194, 39, 205, 77, 86, 103, 121, 149, 191, 180, 61, 203, 26, 174, 127, 84, 43, 157, 139, 225, 202, 36, 177, 33, 221, 234, 2, 114, 94, 103, 164, 224, 137, 173, 252, 253, 245, 114, 135, 7, 106, 14, 221, 87, 95, 250, 239, 26, 132, 151, 134, 88, 8, 170, 202, 186, 209, 220, 192, 102, 232, 12, 46, 123, 73, 100, 15, 242, 163, 218, 252, 186, 179, 227, 85, 105, 183, 241, 154, 216, 226, 39, 71, 3, 55, 144, 171, 241, 174, 239, 92, 35, 249, 233, 180, 14, 73, 17, 92, 58, 48, 137, 1, 109, 254, 234, 215, 65, 93, 215, 24, 215, 216, 215, 40, 234, 20, 57, 243, 110, 191, 123, 188, 62, 232, 44, 101, 12, 208, 64, 203, 143, 17, 167, 130, 129, 13, 100, 111, 18, 29, 79, 127, 131, 145, 211, 94, 167, 155, 223, 182, 116, 188, 46, 125, 255, 112, 85, 70, 42, 185, 57, 188, 130, 193, 207, 55, 192, 107, 234, 102, 81, 132, 199, 207, 146, 167, 226, 235, 146, 20, 121, 252, 49, 78, 245, 172, 137, 22, 111, 155, 240, 151, 18, 74, 45, 105, 57, 230, 144, 178, 177, 249, 99, 241, 0, 176, 225, 239, 197, 135, 121, 49, 38, 63, 175, 35, 19, 94, 103, 63, 207, 170, 139, 198, 231, 67, 176, 201, 126, 53, 216, 33, 93, 0, 12, 182, 127, 51, 255, 163, 146, 255, 35, 88, 8, 75, 154, 90, 248, 62, 80, 186, 67, 147, 216, 96, 91, 223, 255, 228, 8, 229, 234, 238, 25, 217, 76, 111, 84, 249, 200, 107, 147, 18, 11, 201, 92, 208, 225, 223, 125, 164, 158, 230, 162, 134, 208, 220, 194, 204, 167, 2, 74, 81, 82, 146, 210, 101, 148, 114, 74, 37, 248, 166, 134, 103, 38, 135, 238, 97, 111, 69, 131, 113, 157, 210, 61, 56, 169, 68, 122, 22, 199, 11, 158, 130, 154, 117, 26, 115, 45, 121, 51, 238, 160, 27, 249, 234, 248, 63, 163, 167, 86, 113, 28, 182, 72, 62, 189, 249, 125, 105, 31, 176, 233, 239, 69, 135, 249, 177, 38, 63, 175, 163, 226, 75, 94, 197, 102, 212, 70, 167, 247, 101, 60, 136, 64, 116, 70, 71, 32, 108, 186, 241, 161, 252, 28, 19, 44, 9, 61, 186, 206, 166, 250, 244, 192, 15, 78, 206, 183, 71, 114, 238, 184, 193, 85, 255, 81, 167, 199, 69, 6, 168, 29, 141, 110, 216, 255, 45, 41, 72, 238, 161, 177, 48, 218, 174, 230, 154, 213, 54, 218, 38, 193, 236, 219, 144, 220, 176, 63, 67, 242, 224, 100, 112, 130, 250, 189, 154, 73, 164, 6, 15, 130, 140, 129, 16, 98, 66, 196, 17, 177, 120, 76, 146, 199, 91, 210, 102, 166, 131, 159, 143, 237, 15, 214, 153, 216, 167, 134, 199, 38, 132, 68, 99, 2, 153, 20, 199, 157, 123, 249, 24, 67, 28, 17, 131, 198, 83, 209, 104, 28, 25, 26, 255, 112, 55, 203, 113, 167, 28, 21, 64, 74, 161, 105, 160, 21, 93, 204, 234, 204, 34, 7, 122, 22, 219, 231, 126, 1, 6, 76, 87, 216, 208, 58, 90, 11, 44, 165, 190, 164, 232, 75, 37, 13, 233, 196, 68, 233, 53, 43, 42, 205, 85, 250, 127, 241, 201, 43, 242, 109, 158, 59, 14, 46, 218, 126, 14, 45, 206, 244, 218, 247, 95, 222, 203, 79, 127, 87, 17, 11, 61, 166, 16, 104, 196, 139, 174, 97, 122, 24, 213, 217, 182, 97, 65, 102, 157, 41, 190, 33, 23, 94, 155, 123, 203, 23, 219, 71, 42, 255, 126, 56, 231, 81, 158, 113, 40, 215, 144, 207, 150, 229, 222, 128, 138, 241, 82, 132, 226, 219, 36, 21, 155, 7, 226, 80, 117, 209, 90, 10, 5, 28, 245, 245, 232, 113, 134, 173, 107, 48, 247, 199, 253, 131, 188, 84, 87, 169, 176, 217, 169, 127, 222, 238, 234, 93, 30, 54, 52, 71, 218, 21, 120, 216, 200, 237, 195, 221, 28, 129, 159, 136, 230, 43, 228, 147, 203, 20, 140, 1, 218, 106, 208, 188, 171, 21, 86, 236, 255, 184, 218, 214, 239, 200, 202, 118, 191, 11, 253, 188, 145, 217, 160, 156, 149, 29, 231, 133, 127, 195, 243, 172, 14, 0, 195, 49, 230, 82, 20, 241, 221, 153, 102, 123, 94, 160, 30, 108, 115, 171, 10, 12, 135, 234, 69, 211, 90, 161, 77, 161, 25, 211, 128, 233, 83, 64, 58, 148, 47, 154, 94, 16, 154, 17, 82, 146, 14, 211, 211, 223, 66, 137, 190, 227, 111, 52, 21, 150, 123, 179, 91, 50, 61, 159, 188, 183, 167, 157, 111, 181, 154, 255, 70, 39, 240, 63, 184, 98, 186, 31, 94, 196, 145, 233, 236, 107, 99, 2, 24, 219, 85, 142, 57, 7, 164, 227, 220, 174, 223, 238, 141, 108, 139, 121, 69, 179, 178, 115, 179, 74, 133, 121, 5, 78, 197, 25, 167, 236, 69, 145, 239, 14, 213, 189, 96, 173, 25, 56, 118, 3, 96, 52, 92, 0, 24, 27, 182, 151, 79, 184, 173, 174, 1, 182, 153, 206, 125, 25, 106, 46, 160, 76, 207, 195, 116, 86, 82, 229, 7, 240, 243, 245, 170, 1, 249, 245, 153, 61, 28, 7, 108, 113, 43, 179, 37, 142, 3, 193, 116, 103, 19, 171, 97, 176, 149, 30, 175, 138, 156, 13, 150, 142, 176, 42, 63, 88, 10, 84, 96, 200, 1, 217, 195, 207, 220, 115, 112, 1, 8, 197, 175, 50, 128, 164, 154, 52, 71, 11, 111, 40, 142, 30, 159, 195, 114, 50, 57, 19, 21, 143, 213, 175, 117, 25, 23, 183, 127, 188, 120, 85, 6, 56, 78, 185, 127, 28, 175, 200, 4, 197, 173, 208, 91, 247, 86, 190, 195, 244, 113, 229, 51, 132, 158, 230, 35, 116, 229, 211, 26, 84, 216, 176, 233, 118, 95, 236, 7, 180, 69, 166, 178, 85, 12, 170, 95, 62, 31, 35, 87, 26, 144, 229, 207, 59, 162, 7, 170, 121, 189, 186, 131, 166, 3, 214, 141, 24, 25, 48, 13, 180, 181, 192, 178, 170, 236, 36, 180, 213, 53, 185, 209, 89, 57, 125, 1, 3, 37, 149, 134, 98, 255, 30, 88, 204, 174, 178, 244, 145, 158, 61, 172, 251, 5, 152, 129, 70, 64, 214, 51, 70, 89, 55, 111, 110, 138, 77, 31, 122, 56, 221, 151, 127, 88, 251, 34, 32, 138, 154, 45, 89, 55, 219, 176, 28, 152, 71, 119, 145, 44, 174, 127, 152, 119, 194, 157, 30, 177, 234, 8, 79, 231, 209, 124, 156, 45, 19, 209, 181, 42, 189, 218, 45, 97, 200, 6, 185, 99, 231, 199, 184, 89, 147, 45, 156, 0, 237, 8, 190, 173, 60, 237, 146, 60, 161, 11, 236, 200, 125, 139, 187, 40, 238, 172, 105, 192, 33, 184, 93, 2, 16, 203, 165, 27, 30, 6, 254, 150, 123, 20, 255, 19, 226, 149, 193, 12, 1, 95, 14, 81, 196, 201, 111, 208, 137, 186, 177, 0, 164, 239, 160, 124, 191, 192, 111, 25, 29, 22, 191, 180, 67, 199, 239, 185, 247, 196, 250, 224, 234, 21, 13, 196, 198, 229, 50, 99, 17, 200, 70, 236, 58, 189, 166, 242, 35, 187, 151, 116, 58, 247, 205, 100, 86, 59, 180, 153, 74, 127, 211, 144, 32, 46, 53, 127, 66, 150, 210, 147, 233, 128, 189, 235, 241, 65, 144, 149, 48, 197, 102, 247, 228, 168, 188, 192, 46, 187, 99, 39, 41, 87, 88, 190, 215, 27, 184, 159, 117, 25, 169, 184, 131, 246, 176, 164, 166, 206, 214, 236, 89, 173, 36, 2, 250, 69, 105, 5, 252, 79, 64, 77, 124, 106, 1, 128, 236, 5, 248, 211, 230, 109, 203, 102, 171, 27, 122, 170, 217, 126, 115, 236, 255, 52, 91, 225, 230, 96, 98, 215, 25, 137, 52, 162, 141, 140, 56, 31, 145, 57, 34, 228, 37, 173, 17, 81, 22, 161, 102, 15, 91, 213, 117, 191, 49, 246, 27, 58, 67, 64, 79, 222, 217, 198, 170, 225, 236, 212, 1, 180, 240, 236, 51, 204, 31, 192, 55, 151, 53, 252, 107, 34, 161, 24, 32, 83, 245, 231, 136, 68, 244, 46, 105, 180, 41, 110, 196, 209, 233, 182, 212, 131, 155, 31, 187, 198, 143, 201, 222, 196, 21, 102, 198, 187, 213, 144, 85, 145, 229, 185, 11, 130, 195, 200, 88, 199, 91, 222, 87, 15, 196, 232, 192, 199, 146, 11, 31, 194, 90, 193, 118, 9, 45, 0, 38, 73, 8, 181, 253, 163, 12, 170, 16, 84, 89, 52, 152, 25, 51, 76, 52, 10, 158, 70, 46, 102, 199, 22, 140, 247, 70, 66, 248, 26, 223, 73, 97, 12, 204, 96, 49, 226, 230, 116, 77, 212, 137, 28, 101, 182, 113, 238, 177, 204, 158, 180, 226, 116, 179, 173, 189, 76, 110, 43, 14, 200, 252, 161, 24, 29, 248, 155, 228, 194, 90, 72, 47, 53, 248, 41, 178, 233, 4, 80, 100, 183, 112, 61, 85, 112, 101, 97, 127, 54, 170, 156, 8, 207, 123, 61, 185, 57, 59, 166, 100, 178, 167, 59, 126, 72, 179, 18, 178, 155, 79, 28, 72, 71, 35, 127, 178, 254, 143, 242, 24, 249, 128, 180, 180, 162, 49, 215, 125, 20, 198, 178, 91, 181, 181, 153, 225, 61, 48, 58, 25, 92, 154, 65, 157, 252, 147, 40, 5, 89, 109, 224, 232, 94, 74, 91, 122, 82, 138, 127, 124, 196, 0, 115, 182, 171, 175, 63, 38, 221, 38, 160, 213, 206, 128, 68, 198, 112, 184, 24, 101, 63, 221, 199, 136, 194, 62, 190, 70, 94, 190, 207, 4, 97, 116, 94, 190, 198, 196, 41, 72, 80, 223, 146, 185, 222, 213, 255, 26, 211, 39, 127, 73, 224, 235, 233, 155, 28, 239, 130, 180, 48, 253, 71, 106, 14, 174, 129, 122, 116, 132, 45, 221, 34, 110, 56, 120, 241, 235, 248, 7, 184, 183, 98, 43, 23, 239, 151, 105, 138, 85, 206, 90, 111, 96, 20, 70, 224, 95, 221, 230, 37, 139, 217, 79, 51, 16, 197, 137, 121, 151, 215, 30, 241, 82, 133, 2, 81, 138, 52, 109, 167, 54, 206, 59, 55, 185, 57, 173, 101, 65, 128, 0, 40, 146, 144, 254, 224, 96, 60, 157, 179, 197, 184, 189, 180, 49, 87, 182, 137, 128, 216, 190, 129, 165, 235, 194, 33, 129, 8, 120, 144, 191, 46, 34, 16, 130, 64, 120, 122, 18, 252, 145, 186, 199, 116, 212, 208, 173, 245, 75, 132, 221, 134, 182, 102, 82, 31, 15, 210, 131, 130, 87, 26, 20, 87, 153, 113, 85, 78, 172, 125, 126, 170, 201, 121, 28, 231, 151, 253, 2, 80, 228, 241, 47, 170, 101, 21, 204, 122, 133, 153, 76, 119, 234, 145, 204, 28, 65, 249, 243, 217, 57, 33, 156, 244, 10, 79, 61, 181, 132, 249, 180, 109, 236, 111, 186, 9, 236, 98, 53, 231, 148, 114, 190, 99, 98, 118, 145, 16, 17, 235, 193, 21, 207, 199, 91, 245, 37, 94, 219, 146, 218, 60, 207, 118, 164, 165, 205, 151, 109, 147, 107, 115, 165, 209, 55, 196, 232, 160, 240, 155, 215, 167, 233, 200, 125, 83, 52, 16, 137, 191, 23, 204, 49, 50, 86, 251, 243, 217, 117, 145, 217, 250, 205, 137, 163, 194, 159, 33, 31, 194, 90, 105, 105, 210, 185, 206, 17, 0, 149, 54, 240, 92, 55, 85, 49, 177, 102, 3, 45, 197, 232, 190, 193, 193, 168, 158, 151, 113, 21, 29, 252, 200, 184, 163, 142, 42, 154, 120, 219, 147, 48, 160, 193, 24, 201, 137, 171, 111, 18, 216, 74, 108, 207, 121, 94, 52, 209, 27, 125, 186, 119, 246, 80, 156, 150, 150, 32, 53, 239, 59, 104, 10, 9, 3, 234, 189, 26, 5, 84, 218, 201, 138, 56, 197, 67, 17, 37, 159, 74, 77, 199, 102, 111, 244, 29, 166, 53, 118, 133, 12, 92, 23, 70, 123, 27, 177, 194, 117, 154, 90, 193, 125, 54, 204, 220, 251, 187, 234, 65, 66, 227, 198, 102, 146, 246, 165, 17, 199, 209, 85, 148, 232, 231, 64, 85, 182, 229, 41, 163, 82, 204, 211, 218, 189, 162, 241, 209, 38, 115, 220, 108, 155, 81, 214, 49, 127, 15, 22, 186, 255, 94, 185, 92, 118, 152, 159, 212, 3, 62, 102, 71, 215, 159, 115, 203, 210, 134, 17, 89, 33, 109, 190, 125, 182, 164, 23, 217, 63, 85, 187, 84, 201, 244, 16, 114, 192, 34, 79, 61, 181, 148, 233, 162, 125, 234, 133, 241, 137, 153, 165, 211, 122, 164, 48, 79, 108, 197, 127, 27, 21, 58, 65, 184, 12, 178, 33, 168, 95, 182, 19, 148, 251, 168, 60, 128, 64, 3, 181, 147, 219, 9, 127, 216, 116, 84, 27, 247, 76, 18, 86, 43, 184, 221, 1, 101, 26, 222, 224, 70, 34, 82, 136, 39, 245, 205, 75, 30, 231, 41, 72, 22, 57, 165, 161, 240, 137, 179, 26, 189, 221, 253, 122, 247, 197, 167, 20, 129, 180, 81, 10, 127, 103, 242, 236, 64, 18, 17, 129, 61, 114, 82, 144, 226, 223, 132, 127, 9, 160, 48, 142, 82, 57, 5, 112, 49, 93, 49, 72, 22, 1, 216, 14, 117, 43, 1, 167, 1, 75, 225, 221, 251, 133, 119, 156, 187, 247, 227, 28, 28, 137, 88, 213, 99, 38, 136, 113, 221, 179, 194, 62, 238, 85, 6, 13, 124, 239, 105, 104, 58, 160, 131, 124, 95, 101, 19, 20, 184, 122, 64, 131, 201, 9, 247, 25, 94, 221, 159, 209, 171, 248, 144, 189, 2, 4, 213, 118, 99, 79, 144, 122, 143, 127, 74, 12, 193, 167, 73, 119, 45, 31, 16, 77, 99, 27, 244, 12, 91, 193, 139, 0, 214, 243, 14, 198, 43, 144, 162, 119, 217, 107, 68, 93, 174, 0, 63, 121, 244, 254, 76, 191, 162, 40, 77, 197, 61, 193, 9, 17, 68, 36, 53, 113, 239, 210, 151, 17, 44, 142, 155, 151, 71, 203, 93, 141, 46, 176, 225, 35, 177, 11, 50, 89, 126, 151, 7, 221, 227, 219, 180, 211, 244, 194, 44, 228, 10, 17, 30, 57, 1, 29, 3, 190, 73, 13, 90, 57, 70, 52, 179, 60, 79, 200, 90, 34, 142, 68, 246, 6, 234, 9, 85, 50, 14, 38, 4, 99, 112, 68, 44, 18, 71, 195, 96, 240, 100, 155, 128, 150, 179, 167, 190, 149, 164, 35, 69, 147, 115, 92, 19, 204, 127, 238, 38, 57, 103, 185, 235, 75, 202, 243, 73, 19, 212, 144, 199, 179, 85, 68, 141, 233, 253, 195, 35, 89, 173, 105, 38, 165, 156, 161, 22, 193, 246, 150, 83, 35, 29, 86, 184, 35, 101, 250, 89, 91, 235, 87, 25, 141, 25, 120, 39, 104, 62, 201, 225, 195, 60, 237, 232, 67, 67, 70, 81, 240, 74, 95, 99, 31, 224, 212, 159, 75, 182, 71, 63, 4, 6, 9, 139, 19, 159, 201, 228, 113, 30, 129, 41, 41, 108, 72, 113, 194, 179, 84, 121, 226, 61, 110, 74, 122, 32, 187, 32, 238, 169, 172, 56, 206, 221, 95, 154, 23, 238, 47, 127, 46, 147, 201, 227, 52, 56, 35, 97, 156, 178, 68, 87, 118, 89, 162, 59, 187, 44, 249, 33, 163, 60, 89, 197, 2, 197, 9, 105, 191, 202, 252, 181, 155, 207, 218, 201, 218, 193, 250, 97, 231, 138, 125, 47, 123, 39, 123, 219, 118, 234, 175, 159, 78, 128, 189, 136, 178, 45, 246, 118, 112, 44, 194, 128, 16, 33, 75, 188, 220, 208, 174, 1, 209, 30, 191, 150, 253, 214, 105, 136, 151, 99, 11, 239, 11, 115, 77, 215, 11, 24, 9, 244, 76, 36, 150, 201, 76, 235, 180, 20, 5, 206, 165, 57, 84, 90, 212, 101, 18, 42, 23, 150, 147, 244, 23, 76, 173, 87, 101, 40, 219, 40, 177, 22, 15, 48, 203, 178, 90, 161, 208, 217, 63, 117, 217, 205, 209, 89, 47, 1, 94, 165, 152, 0, 17, 226, 178, 5, 135, 228, 152, 136, 72, 130, 58, 61, 61, 16, 230, 233, 34, 127, 170, 40, 255, 127, 111, 132, 182, 79, 185, 202, 247, 189, 254, 41, 198, 105, 5, 186, 211, 49, 205, 72, 113, 25, 20, 20, 209, 155, 137, 9, 232, 137, 246, 202, 53, 188, 85, 18, 234, 150, 113, 238, 243, 197, 214, 199, 245, 159, 99, 105, 201, 122, 144, 90, 63, 79, 175, 50, 248, 230, 132, 11, 227, 194, 244, 164, 203, 198, 148, 203, 197, 241, 97, 71, 198, 213, 133, 121, 151, 43, 35, 142, 89, 231, 234, 107, 249, 204, 107, 106, 235, 249, 199, 171, 121, 198, 106, 107, 97, 22, 53, 53, 181, 60, 67, 13, 252, 40, 51, 119, 90, 14, 183, 255, 61, 1, 163, 37, 201, 162, 56, 209, 200, 227, 17, 50, 127, 18, 140, 46, 26, 25, 153, 238, 5, 14, 173, 211, 171, 73, 75, 141, 201, 93, 37, 82, 213, 223, 149, 160, 225, 234, 192, 138, 138, 162, 80, 237, 125, 172, 92, 184, 51, 53, 46, 122, 12, 189, 168, 17, 55, 238, 244, 48, 171, 39, 59, 244, 25, 250, 55, 179, 242, 166, 69, 224, 106, 128, 46, 179, 241, 252, 34, 191, 228, 40, 177, 158, 49, 14, 9, 197, 96, 188, 73, 240, 246, 152, 9, 172, 250, 206, 203, 165, 65, 199, 200, 200, 147, 201, 228, 184, 178, 100, 109, 53, 63, 169, 143, 18, 3, 34, 208, 84, 172, 164, 166, 39, 95, 142, 79, 238, 31, 73, 79, 235, 31, 76, 75, 31, 236, 75, 113, 104, 183, 11, 107, 195, 58, 160, 248, 194, 224, 96, 190, 0, 141, 23, 242, 49, 24, 161, 208, 248, 101, 126, 102, 91, 102, 126, 71, 62, 161, 239, 243, 162, 152, 65, 212, 182, 216, 166, 56, 100, 148, 82, 182, 191, 29, 46, 134, 196, 250, 121, 92, 203, 22, 199, 135, 49, 50, 42, 159, 142, 167, 228, 161, 66, 105, 81, 173, 41, 207, 43, 227, 50, 132, 108, 108, 30, 153, 144, 99, 136, 86, 12, 205, 152, 68, 66, 254, 209, 212, 166, 156, 200, 128, 158, 87, 230, 185, 11, 201, 177, 27, 97, 37, 126, 43, 241, 114, 8, 47, 111, 101, 55, 235, 98, 107, 201, 86, 182, 10, 167, 180, 40, 202, 71, 187, 114, 149, 85, 73, 47, 99, 66, 92, 13, 170, 54, 55, 164, 239, 161, 129, 174, 186, 93, 67, 167, 218, 137, 10, 150, 121, 27, 105, 224, 136, 90, 107, 81, 181, 121, 196, 94, 123, 242, 86, 24, 196, 44, 142, 65, 80, 53, 144, 236, 173, 0, 48, 107, 7, 229, 27, 45, 85, 246, 186, 205, 95, 211, 191, 255, 146, 174, 254, 59, 210, 117, 44, 254, 0, 226, 159, 62, 116, 198, 104, 182, 164, 181, 147, 42, 92, 144, 158, 247, 37, 108, 231, 89, 104, 67, 88, 225, 48, 146, 102, 68, 140, 163, 134, 209, 49, 0, 170, 39, 141, 36, 218, 126, 18, 30, 38, 214, 189, 86, 195, 231, 112, 229, 89, 137, 235, 47, 206, 107, 30, 168, 168, 107, 121, 91, 128, 109, 238, 59, 175, 10, 34, 36, 134, 135, 67, 167, 88, 66, 72, 208, 83, 74, 176, 132, 169, 235, 120, 79, 215, 184, 233, 71, 233, 51, 70, 92, 4, 51, 35, 172, 94, 166, 67, 47, 74, 239, 118, 137, 63, 35, 112, 128, 130, 50, 45, 81, 35, 142, 210, 226, 69, 202, 102, 7, 176, 113, 196, 120, 70, 124, 228, 136, 2, 197, 146, 50, 191, 30, 120, 121, 254, 112, 160, 206, 200, 86, 66, 23, 74, 34, 24, 184, 0, 22, 201, 241, 149, 198, 98, 111, 198, 0, 171, 3, 4, 81, 6, 74, 1, 196, 121, 55, 189, 185, 63, 69, 63, 89, 130, 95, 84, 205, 100, 220, 100, 156, 81, 53, 109, 40, 40, 137, 143, 230, 231, 132, 159, 7, 111, 251, 245, 216, 183, 33, 46, 170, 33, 168, 113, 18, 141, 60, 229, 84, 244, 236, 187, 19, 233, 23, 224, 213, 120, 151, 236, 166, 108, 117, 41, 3, 26, 168, 114, 224, 228, 7, 61, 100, 78, 30, 26, 137, 81, 137, 89, 24, 44, 2, 157, 149, 99, 120, 225, 169, 61, 7, 228, 122, 22, 189, 141, 177, 100, 148, 191, 116, 97, 215, 245, 142, 70, 58, 142, 179, 183, 81, 104, 21, 81, 144, 225, 196, 169, 26, 121, 247, 47, 104, 199, 162, 12, 54, 128, 96, 249, 85, 173, 124, 134, 200, 239, 208, 31, 154, 201, 97, 11, 136, 40, 223, 170, 79, 107, 80, 243, 250, 164, 26, 65, 128, 187, 252, 63, 160, 54, 105, 144, 252, 172, 254, 99, 156, 154, 238, 203, 246, 183, 164, 222, 134, 216, 106, 100, 87, 212, 100, 165, 62, 250, 214, 190, 49, 190, 88, 203, 45, 2, 17, 1, 50, 26, 73, 114, 13, 138, 10, 8, 141, 177, 23, 163, 135, 86, 26, 222, 15, 60, 130, 108, 228, 148, 73, 193, 215, 242, 213, 17, 97, 25, 88, 25, 70, 152, 29, 18, 4, 23, 161, 60, 130, 61, 131, 108, 220, 49, 37, 150, 226, 252, 146, 128, 216, 26, 66, 246, 48, 224, 235, 231, 59, 36, 53, 90, 237, 122, 174, 5, 57, 170, 77, 94, 54, 222, 80, 244, 146, 153, 142, 76, 101, 84, 89, 97, 135, 236, 157, 174, 73, 121, 188, 117, 47, 140, 232, 252, 58, 247, 131, 122, 15, 185, 73, 105, 193, 191, 210, 96, 177, 106, 107, 51, 206, 155, 84, 253, 249, 17, 44, 145, 145, 179, 230, 210, 80, 213, 211, 254, 163, 240, 117, 117, 76, 221, 43, 36, 171, 148, 172, 144, 44, 203, 205, 23, 166, 150, 44, 79, 3, 166, 173, 38, 132, 55, 133, 245, 238, 179, 131, 193, 7, 69, 102, 6, 217, 191, 4, 78, 186, 253, 67, 50, 234, 141, 143, 118, 73, 41, 1, 39, 42, 95, 255, 206, 181, 47, 158, 121, 74, 247, 37, 219, 209, 26, 210, 239, 165, 145, 159, 166, 218, 23, 244, 6, 183, 165, 151, 68, 191, 102, 66, 182, 230, 162, 242, 147, 42, 74, 10, 48, 101, 169, 57, 73, 157, 150, 55, 224, 157, 237, 193, 179, 249, 197, 54, 159, 61, 144, 123, 40, 72, 64, 144, 65, 80, 144, 14, 214, 199, 95, 27, 245, 35, 59, 224, 225, 16, 20, 125, 229, 231, 141, 75, 40, 117, 164, 164, 214, 20, 82, 186, 5, 179, 241, 42, 36, 16, 193, 45, 115, 34, 196, 151, 230, 203, 80, 0, 201, 33, 180, 82, 201, 37, 251, 230, 196, 81, 25, 124, 164, 9, 69, 46, 76, 14, 213, 37, 105, 94, 59, 86, 217, 97, 53, 219, 126, 243, 184, 43, 135, 18, 52, 224, 35, 201, 217, 245, 199, 205, 180, 20, 6, 100, 81, 83, 4, 192, 2, 191, 225, 200, 83, 69, 117, 217, 50, 227, 42, 218, 4, 92, 134, 95, 231, 46, 126, 32, 234, 152, 150, 2, 240, 219, 237, 35, 11, 100, 110, 79, 144, 20, 186, 193, 190, 182, 21, 210, 71, 45, 66, 147, 42, 206, 200, 31, 64, 78, 159, 224, 138, 42, 138, 70, 135, 69, 95, 129, 2, 42, 179, 250, 51, 19, 74, 154, 120, 47, 199, 85, 96, 99, 179, 102, 71, 252, 147, 129, 127, 250, 218, 192, 238, 12, 213, 15, 193, 145, 86, 149, 240, 225, 250, 225, 205, 243, 205, 242, 205, 139, 115, 219, 171, 229, 243, 14, 105, 59, 17, 249, 130, 60, 167, 237, 112, 174, 8, 163, 69, 21, 69, 56, 2, 46, 118, 32, 54, 222, 112, 143, 37, 69, 52, 29, 216, 110, 218, 50, 174, 62, 215, 79, 33, 64, 184, 103, 14, 38, 32, 48, 83, 252, 6, 140, 170, 225, 251, 248, 3, 117, 210, 181, 52, 239, 184, 119, 136, 75, 222, 245, 138, 64, 32, 197, 240, 149, 131, 76, 68, 103, 155, 255, 235, 115, 183, 187, 9, 78, 61, 10, 203, 248, 128, 45, 29, 253, 61, 241, 94, 112, 70, 199, 232, 243, 201, 19, 86, 39, 159, 136, 142, 206, 112, 171, 29, 117, 165, 123, 173, 254, 29, 235, 139, 212, 189, 100, 164, 25, 26, 39, 142, 221, 203, 146, 209, 76, 7, 154, 209, 172, 85, 29, 163, 176, 75, 137, 137, 156, 38, 10, 119, 186, 14, 72, 251, 212, 234, 178, 154, 44, 253, 137, 59, 84, 247, 88, 182, 70, 81, 189, 124, 150, 40, 61, 9, 186, 157, 22, 173, 148, 249, 188, 173, 244, 210, 216, 212, 140, 251, 88, 85, 171, 218, 100, 252, 83, 60, 164, 5, 16, 227, 165, 145, 8, 137, 44, 247, 23, 133, 149, 104, 164, 48, 180, 125, 167, 53, 107, 217, 55, 217, 103, 52, 33, 22, 224, 133, 21, 40, 13, 205, 18, 243, 66, 188, 181, 25, 32, 55, 36, 52, 226, 62, 35, 107, 218, 48, 106, 152, 250, 132, 89, 158, 18, 76, 47, 122, 29, 57, 243, 16, 202, 148, 15, 223, 108, 254, 103, 71, 200, 135, 160, 138, 156, 186, 66, 239, 49, 24, 211, 110, 213, 218, 122, 154, 15, 215, 168, 113, 50, 97, 24, 157, 145, 48, 208, 55, 132, 26, 200, 206, 138, 235, 215, 170, 127, 255, 184, 52, 13, 148, 246, 253, 69, 108, 93, 80, 247, 247, 237, 57, 143, 214, 59, 203, 90, 239, 117, 189, 221, 235, 153, 207, 50, 107, 232, 141, 153, 69, 235, 207, 89, 230, 104, 67, 39, 202, 91, 59, 166, 146, 43, 146, 191, 66, 178, 254, 15, 121, 43, 120, 207, 224, 236, 203, 240, 129, 42, 37, 137, 211, 239, 40, 248, 174, 221, 138, 134, 74, 9, 213, 3, 29, 61, 35, 40, 63, 59, 239, 86, 103, 67, 211, 135, 219, 246, 104, 205, 83, 139, 247, 44, 145, 17, 194, 158, 209, 144, 211, 186, 226, 213, 170, 246, 1, 115, 137, 225, 33, 229, 25, 59, 67, 24, 17, 18, 202, 78, 252, 217, 241, 183, 45, 16, 225, 3, 174, 246, 15, 14, 48, 209, 253, 117, 251, 242, 81, 96, 249, 163, 31, 60, 178, 31, 38, 202, 73, 130, 130, 168, 120, 97, 217, 51, 192, 232, 98, 184, 59, 249, 28, 155, 255, 17, 54, 210, 242, 25, 5, 41, 18, 242, 119, 80, 229, 21, 61, 247, 96, 224, 149, 182, 173, 55, 84, 22, 47, 233, 140, 151, 117, 19, 150, 1, 73, 164, 132, 163, 41, 87, 109, 187, 101, 59, 89, 239, 219, 123, 215, 1, 126, 128, 37, 253, 248, 177, 124, 116, 151, 8, 221, 118, 233, 7, 206, 231, 225, 190, 183, 151, 7, 6, 230, 35, 187, 102, 82, 66, 94, 236, 195, 34, 134, 225, 247, 104, 43, 131, 31, 70, 226, 248, 142, 138, 205, 255, 18, 185, 180, 124, 229, 17, 241, 178, 212, 51, 17, 175, 234, 169, 40, 177, 60, 66, 128, 7, 35, 192, 158, 104, 7, 219, 120, 170, 141, 45, 255, 253, 152, 156, 231, 157, 40, 140, 40, 78, 32, 200, 196, 31, 98, 61, 53, 126, 207, 119, 111, 96, 224, 218, 16, 171, 240, 61, 59, 83, 131, 88, 185, 119, 246, 20, 169, 166, 239, 137, 81, 246, 146, 84, 199, 208, 104, 22, 87, 142, 176, 81, 151, 79, 70, 78, 35, 213, 44, 247, 86, 139, 59, 74, 40, 178, 82, 45, 86, 44, 117, 104, 177, 60, 104, 82, 53, 213, 203, 193, 50, 216, 129, 170, 8, 191, 226, 25, 77, 195, 189, 179, 207, 91, 254, 60, 33, 33, 63, 71, 192, 207, 203, 73, 20, 149, 70, 23, 123, 185, 173, 72, 58, 119, 203, 196, 197, 59, 45, 137, 158, 63, 114, 12, 183, 95, 123, 165, 171, 129, 146, 164, 36, 179, 160, 184, 108, 6, 170, 69, 23, 138, 77, 48, 115, 73, 92, 21, 181, 52, 35, 216, 97, 205, 204, 172, 12, 164, 89, 7, 43, 19, 178, 189, 237, 41, 13, 132, 57, 100, 11, 125, 105, 238, 193, 146, 248, 60, 25, 69, 198, 85, 86, 159, 58, 171, 67, 87, 208, 115, 195, 227, 102, 126, 159, 89, 109, 193, 139, 92, 144, 247, 207, 23, 153, 1, 87, 206, 79, 182, 124, 215, 91, 64, 227, 111, 44, 204, 250, 252, 219, 242, 142, 213, 44, 198, 122, 37, 76, 24, 167, 197, 224, 7, 140, 125, 190, 67, 234, 164, 4, 133, 3, 247, 62, 74, 203, 246, 42, 251, 253, 134, 71, 174, 18, 84, 158, 136, 157, 62, 171, 115, 121, 201, 168, 41, 69, 138, 196, 5, 147, 96, 2, 22, 139, 35, 97, 49, 4, 146, 171, 131, 160, 243, 199, 55, 35, 181, 182, 237, 210, 236, 147, 23, 70, 255, 149, 196, 142, 224, 226, 47, 104, 94, 80, 91, 8, 34, 48, 14, 78, 127, 151, 128, 230, 30, 243, 231, 79, 107, 12, 12, 116, 107, 144, 149, 213, 13, 38, 21, 161, 171, 165, 116, 222, 82, 174, 88, 141, 155, 254, 127, 4, 16, 32, 160, 15, 150, 97, 48, 89, 115, 93, 152, 58, 204, 245, 245, 228, 57, 25, 63, 15, 102, 26, 163, 122, 150, 119, 102, 127, 70, 5, 65, 6, 92, 60, 74, 186, 214, 51, 140, 167, 37, 126, 125, 77, 101, 238, 239, 192, 167, 217, 155, 143, 228, 147, 223, 183, 148, 148, 200, 14, 103, 116, 252, 213, 210, 25, 23, 167, 135, 26, 75, 251, 122, 171, 164, 149, 97, 190, 15, 120, 219, 105, 19, 10, 200, 74, 95, 167, 223, 144, 189, 108, 81, 93, 252, 218, 161, 62, 71, 154, 158, 242, 179, 164, 162, 128, 132, 58, 190, 147, 231, 193, 236, 179, 183, 235, 112, 111, 223, 155, 250, 169, 145, 46, 6, 54, 15, 126, 155, 66, 28, 202, 45, 221, 189, 221, 45, 109, 32, 1, 6, 237, 30, 126, 105, 193, 215, 12, 113, 40, 110, 43, 114, 225, 7, 234, 235, 118, 191, 105, 186, 129, 1, 55, 214, 207, 190, 46, 162, 5, 251, 252, 182, 60, 183, 30, 183, 249, 247, 90, 108, 194, 2, 194, 3, 3, 3, 232, 214, 151, 42, 204, 218, 252, 36, 91, 222, 91, 197, 30, 237, 194, 183, 119, 55, 78, 53, 22, 212, 255, 73, 64, 237, 82, 135, 126, 62, 74, 52, 65, 61, 151, 212, 146, 69, 138, 234, 143, 61, 110, 126, 242, 195, 137, 24, 13, 244, 74, 236, 215, 103, 221, 54, 30, 84, 69, 125, 55, 249, 0, 27, 197, 20, 240, 73, 149, 207, 113, 97, 227, 213, 182, 223, 230, 116, 70, 15, 132, 4, 189, 112, 85, 233, 176, 177, 29, 202, 248, 33, 233, 252, 91, 1, 39, 89, 242, 167, 98, 252, 91, 20, 251, 71, 239, 81, 154, 122, 219, 128, 138, 217, 1, 93, 159, 244, 209, 72, 168, 167, 154, 117, 137, 41, 39, 150, 102, 98, 157, 79, 25, 22, 36, 199, 69, 36, 150, 134, 17, 72, 219, 183, 118, 138, 134, 18, 40, 118, 4, 234, 195, 52, 27, 187, 17, 252, 62, 150, 220, 138, 175, 66, 184, 120, 193, 236, 3, 107, 187, 170, 237, 35, 47, 11, 5, 30, 254, 146, 235, 172, 177, 212, 213, 226, 62, 191, 117, 241, 151, 90, 204, 41, 27, 187, 49, 21, 54, 41, 20, 230, 237, 27, 22, 127, 24, 113, 62, 96, 226, 162, 236, 23, 3, 231, 239, 9, 219, 207, 165, 182, 217, 27, 155, 104, 169, 120, 232, 105, 64, 191, 200, 224, 68, 86, 100, 99, 78, 92, 42, 186, 84, 219, 69, 142, 109, 45, 41, 122, 133, 160, 118, 179, 174, 247, 218, 158, 203, 55, 254, 120, 249, 223, 179, 250, 101, 201, 19, 185, 15, 46, 200, 79, 166, 92, 22, 44, 108, 180, 153, 19, 230, 31, 59, 151, 179, 163, 119, 146, 76, 235, 245, 219, 205, 252, 235, 213, 27, 18, 241, 39, 42, 166, 184, 14, 105, 211, 112, 166, 9, 89, 233, 150, 192, 244, 151, 225, 130, 48, 141, 191, 105, 239, 182, 122, 183, 64, 120, 254, 174, 165, 86, 122, 207, 68, 214, 174, 251, 158, 9, 169, 144, 6, 142, 30, 238, 198, 48, 8, 154, 178, 115, 146, 147, 24, 144, 41, 105, 74, 234, 152, 246, 158, 255, 125, 135, 12, 234, 61, 117, 238, 127, 172, 91, 178, 220, 180, 60, 192, 86, 228, 191, 54, 151, 39, 229, 99, 102, 2, 21, 25, 157, 8, 9, 83, 34, 41, 176, 227, 83, 218, 243, 221, 192, 59, 1, 226, 46, 142, 88, 131, 229, 10, 65, 60, 140, 118, 140, 212, 159, 211, 204, 212, 134, 77, 149, 55, 183, 145, 114, 147, 114, 230, 136, 57, 60, 183, 224, 68, 19, 41, 222, 184, 53, 29, 85, 170, 176, 90, 147, 87, 33, 223, 200, 104, 30, 11, 34, 248, 97, 237, 212, 143, 219, 94, 91, 41, 153, 223, 79, 12, 181, 16, 213, 102, 104, 109, 164, 145, 243, 189, 80, 171, 61, 96, 186, 7, 8, 65, 124, 248, 236, 100, 76, 133, 222, 6, 230, 84, 35, 251, 212, 182, 31, 95, 250, 179, 127, 116, 40, 236, 53, 145, 148, 59, 241, 2, 174, 176, 166, 186, 16, 92, 147, 85, 40, 186, 74, 165, 45, 177, 116, 222, 168, 113, 238, 95, 113, 156, 111, 139, 107, 111, 109, 125, 99, 67, 47, 58, 197, 28, 28, 19, 231, 211, 203, 211, 203, 87, 245, 36, 178, 46, 174, 251, 72, 217, 44, 184, 67, 214, 193, 199, 77, 170, 62, 96, 192, 193, 215, 215, 42, 248, 182, 102, 58, 107, 123, 147, 243, 165, 97, 177, 4, 236, 174, 247, 33, 235, 198, 158, 237, 216, 20, 47, 244, 188, 136, 218, 111, 177, 187, 53, 209, 116, 197, 131, 17, 249, 220, 175, 56, 105, 129, 130, 63, 246, 168, 228, 174, 195, 95, 196, 183, 247, 74, 8, 25, 135, 210, 163, 142, 142, 142, 69, 174, 168, 135, 253, 214, 201, 167, 230, 162, 234, 56, 250, 96, 149, 79, 99, 26, 226, 6, 142, 238, 57, 34, 59, 224, 142, 15, 220, 178, 116, 110, 139, 204, 94, 78, 201, 49, 40, 82, 183, 162, 181, 209, 199, 178, 149, 165, 93, 169, 203, 242, 134, 174, 59, 88, 228, 139, 211, 216, 254, 159, 76, 65, 100, 247, 188, 116, 151, 24, 230, 240, 50, 245, 139, 56, 244, 219, 180, 100, 116, 99, 213, 143, 188, 122, 229, 211, 149, 111, 21, 205, 218, 11, 117, 167, 107, 29, 163, 245, 231, 60, 109, 242, 142, 225, 90, 91, 205, 77, 120, 189, 214, 7, 87, 196, 11, 32, 239, 127, 252, 163, 118, 38, 56, 15, 196, 142, 166, 229, 164, 44, 239, 6, 26, 220, 21, 170, 57, 19, 204, 103, 123, 26, 233, 179, 95, 78, 44, 145, 176, 65, 205, 72, 15, 35, 146, 88, 167, 108, 14, 139, 202, 196, 253, 25, 65, 241, 181, 87, 238, 25, 154, 172, 158, 56, 227, 251, 139, 123, 73, 66, 146, 223, 72, 181, 1, 245, 116, 25, 127, 180, 254, 160, 114, 86, 181, 152, 182, 107, 77, 95, 73, 211, 25, 29, 227, 136, 100, 217, 103, 37, 89, 217, 8, 94, 117, 255, 27, 218, 226, 179, 199, 35, 33, 14, 122, 120, 77, 237, 200, 172, 230, 88, 207, 67, 207, 121, 148, 194, 91, 174, 12, 70, 199, 75, 14, 18, 26, 231, 238, 136, 235, 53, 209, 194, 248, 162, 52, 1, 12, 99, 59, 109, 211, 216, 112, 136, 225, 27, 17, 251, 87, 93, 21, 0, 201, 39, 195, 73, 183, 246, 101, 141, 1, 200, 204, 5, 17, 217, 133, 247, 20, 117, 214, 131, 0, 234, 37, 58, 42, 26, 99, 27, 34, 36, 197, 138, 10, 234, 175, 142, 180, 234, 85, 14, 20, 182, 6, 158, 241, 90, 36, 134, 111, 194, 137, 219, 188, 19, 86, 219, 139, 212, 148, 53, 210, 191, 221, 203, 150, 87, 201, 39, 222, 16, 29, 63, 48, 60, 67, 101, 56, 106, 50, 219, 255, 82, 2, 105, 45, 48, 250, 96, 12, 47, 89, 27, 225, 194, 136, 108, 118, 225, 35, 97, 116, 186, 224, 204, 197, 177, 219, 22, 112, 182, 251, 190, 244, 238, 209, 68, 103, 234, 187, 137, 143, 186, 64, 15, 207, 95, 147, 23, 155, 144, 153, 234, 153, 90, 202, 173, 195, 239, 155, 101, 187, 90, 91, 237, 154, 79, 45, 133, 249, 226, 199, 141, 54, 168, 165, 157, 195, 247, 46, 17, 155, 49, 158, 45, 124, 190, 160, 167, 188, 43, 171, 28, 91, 12, 143, 95, 24, 130, 254, 149, 142, 64, 200, 29, 207, 103, 186, 38, 98, 161, 186, 27, 41, 10, 24, 234, 188, 151, 204, 239, 30, 224, 202, 42, 77, 179, 181, 166, 193, 144, 129, 202, 224, 188, 140, 190, 128, 117, 59, 124, 250, 245, 238, 85, 182, 45, 134, 144, 38, 56, 183, 93, 216, 57, 244, 29, 226, 137, 182, 201, 70, 67, 127, 72, 95, 213, 180, 93, 214, 27, 152, 66, 156, 191, 245, 117, 141, 73, 150, 105, 90, 157, 200, 236, 234, 253, 178, 249, 173, 119, 120, 6, 63, 32, 16, 97, 9, 24, 220, 117, 138, 233, 166, 178, 199, 72, 58, 190, 144, 202, 122, 208, 221, 45, 55, 150, 239, 52, 99, 182, 50, 146, 112, 154, 47, 11, 27, 27, 223, 4, 231, 101, 246, 250, 111, 102, 169, 31, 124, 31, 82, 15, 28, 197, 176, 227, 222, 31, 247, 187, 61, 197, 188, 195, 28, 136, 86, 71, 105, 61, 108, 183, 147, 254, 23, 169, 143, 116, 122, 15, 117, 2, 198, 133, 177, 221, 49, 138, 81, 192, 54, 195, 226, 63, 128, 76, 123, 251, 187, 251, 76, 123, 32, 83, 253, 189, 172, 172, 190, 206, 106, 150, 253, 131, 76, 155, 29, 232, 247, 247, 246, 89, 97, 56, 243, 235, 110, 142, 111, 164, 117, 133, 183, 225, 7, 145, 143, 90, 134, 170, 58, 143, 93, 154, 3, 74, 253, 87, 21, 5, 176, 132, 190, 237, 215, 210, 207, 105, 198, 117, 20, 181, 240, 235, 55, 17, 84, 239, 68, 61, 36, 59, 50, 152, 1, 12, 199, 198, 101, 19, 195, 39, 160, 228, 94, 30, 139, 27, 16, 33, 5, 224, 59, 62, 222, 111, 253, 36, 198, 44, 206, 144, 155, 13, 43, 88, 246, 2, 158, 29, 151, 154, 231, 199, 108, 53, 248, 2, 196, 93, 248, 212, 35, 79, 186, 145, 96, 192, 80, 56, 165, 5, 207, 113, 11, 108, 115, 42, 163, 190, 199, 162, 36, 156, 99, 248, 231, 67, 171, 248, 168, 172, 112, 215, 20, 211, 69, 248, 110, 207, 13, 184, 79, 63, 200, 241, 153, 102, 19, 212, 21, 65, 222, 24, 185, 255, 12, 163, 209, 55, 231, 130, 204, 216, 133, 225, 11, 248, 13, 145, 128, 171, 219, 35, 237, 136, 55, 108, 171, 146, 197, 133, 15, 22, 248, 242, 237, 166, 47, 148, 178, 1, 179, 180, 199, 151, 103, 199, 227, 55, 128, 7, 217, 236, 150, 150, 23, 204, 2, 215, 213, 115, 101, 109, 1, 189, 167, 17, 121, 135, 170, 138, 125, 203, 78, 173, 245, 216, 109, 203, 146, 186, 196, 104, 190, 118, 58, 216, 86, 86, 121, 171, 186, 87, 177, 202, 152, 185, 169, 56, 203, 22, 184, 172, 216, 212, 16, 227, 12, 70, 235, 107, 67, 149, 165, 21, 161, 121, 233, 221, 254, 39, 178, 140, 228, 133, 23, 113, 156, 11, 245, 236, 245, 238, 79, 60, 219, 12, 147, 210, 5, 174, 50, 9, 110, 72, 13, 15, 76, 149, 53, 238, 79, 81, 217, 80, 224, 25, 156, 140, 241, 222, 93, 245, 160, 45, 253, 236, 164, 203, 103, 125, 159, 114, 167, 228, 132, 74, 251, 199, 237, 154, 91, 30, 160, 163, 48, 238, 211, 179, 19, 138, 253, 202, 153, 114, 154, 137, 195, 47, 42, 113, 196, 155, 222, 212, 74, 5, 91, 115, 142, 42, 60, 112, 2, 77, 10, 102, 224, 96, 18, 100, 40, 111, 93, 165, 53, 231, 169, 114, 1, 250, 110, 106, 130, 153, 70, 87, 6, 25, 157, 156, 129, 26, 212, 26, 197, 98, 213, 186, 226, 152, 89, 94, 23, 160, 75, 180, 93, 58, 253, 43, 165, 113, 229, 64, 126, 169, 127, 166, 172, 11, 85, 137, 215, 21, 182, 133, 126, 203, 160, 247, 158, 19, 161, 17, 226, 153, 51, 112, 109, 99, 239, 230, 168, 156, 0, 77, 210, 41, 33, 150, 239, 199, 94, 222, 37, 58, 166, 98, 228, 191, 254, 1, 89, 172, 61, 66, 238, 96, 250, 82, 43, 211, 75, 16, 53, 123, 146, 123, 169, 158, 89, 164, 120, 118, 79, 24, 136, 164, 45, 67, 249, 245, 156, 213, 238, 129, 17, 202, 243, 179, 255, 44, 163, 97, 57, 42, 62, 208, 75, 142, 114, 152, 192, 87, 96, 168, 240, 231, 105, 164, 127, 168, 151, 7, 98, 101, 187, 144, 128, 48, 198, 95, 79, 94, 79, 254, 153, 188, 170, 126, 63, 109, 52, 109, 139, 26, 82, 90, 84, 158, 122, 116, 198, 48, 251, 172, 206, 174, 66, 111, 83, 137, 117, 157, 181, 142, 229, 75, 27, 211, 29, 21, 146, 113, 41, 233, 117, 233, 49, 41, 226, 207, 42, 173, 76, 95, 76, 95, 231, 151, 229, 235, 7, 151, 93, 148, 86, 27, 224, 166, 135, 204, 95, 204, 237, 230, 101, 244, 44, 43, 3, 19, 249, 165, 37, 30, 237, 160, 142, 115, 178, 84, 221, 75, 120, 219, 179, 25, 88, 115, 10, 173, 195, 172, 47, 185, 213, 76, 183, 25, 225, 197, 85, 89, 229, 91, 184, 111, 76, 125, 40, 33, 9, 154, 189, 199, 135, 113, 48, 166, 186, 1, 229, 61, 169, 187, 55, 25, 207, 213, 104, 55, 165, 164, 9, 136, 109, 86, 5, 249, 211, 66, 105, 3, 143, 152, 58, 108, 87, 20, 1, 188, 98, 102, 41, 72, 189, 200, 243, 249, 16, 46, 35, 181, 51, 47, 156, 195, 73, 250, 236, 164, 76, 189, 19, 107, 224, 80, 202, 133, 123, 107, 221, 246, 221, 94, 186, 80, 164, 63, 246, 79, 132, 215, 107, 35, 99, 178, 175, 158, 28, 226, 4, 101, 31, 1, 177, 189, 73, 185, 73, 64, 184, 163, 62, 32, 16, 59, 216, 11, 44, 1, 97, 25, 24, 78, 93, 241, 237, 60, 41, 244, 93, 17, 136, 226, 216, 126, 21, 23, 81, 66, 182, 191, 108, 147, 67, 100, 196, 175, 254, 137, 132, 208, 51, 224, 55, 241, 148, 204, 226, 34, 122, 107, 63, 42, 43, 38, 42, 192, 223, 42, 25, 250, 199, 21, 94, 85, 150, 151, 143, 150, 50, 124, 42, 103, 232, 125, 103, 130, 81, 93, 42, 85, 253, 39, 169, 8, 177, 141, 37, 193, 18, 100, 152, 195, 169, 205, 245, 45, 182, 125, 146, 209, 238, 247, 8, 136, 237, 21, 55, 191, 69, 165, 248, 169, 225, 182, 178, 18, 165, 132, 100, 192, 195, 49, 192, 60, 106, 238, 198, 226, 176, 39, 210, 141, 230, 165, 55, 79, 156, 212, 85, 245, 228, 51, 130, 170, 32, 41, 162, 7, 248, 253, 232, 77, 105, 29, 1, 119, 124, 83, 248, 112, 69, 215, 28, 80, 176, 26, 154, 189, 219, 7, 120, 166, 142, 206, 223, 62, 218, 124, 83, 218, 112, 208, 248, 101, 6, 177, 221, 247, 127, 81, 208, 148, 171, 202, 173, 153, 177, 36, 249, 191, 19, 196, 142, 34, 58, 31, 122, 85, 243, 8, 239, 2, 166, 208, 47, 20, 251, 215, 202, 31, 62, 84, 225, 207, 104, 110, 89, 26, 71, 145, 129, 235, 37, 122, 173, 92, 234, 74, 135, 141, 135, 84, 57, 169, 233, 40, 247, 195, 74, 144, 41, 109, 163, 105, 1, 250, 190, 61, 220, 204, 204, 76, 98, 186, 130, 27, 98, 96, 160, 228, 233, 26, 128, 229, 252, 106, 147, 128, 216, 238, 251, 201, 242, 11, 241, 143, 143, 7, 84, 114, 215, 100, 253, 207, 214, 83, 83, 34, 215, 251, 123, 35, 87, 83, 82, 159, 173, 90, 233, 253, 33, 59, 22, 100, 156, 63, 24, 213, 243, 165, 101, 228, 6, 113, 82, 255, 229, 216, 158, 94, 96, 147, 120, 207, 16, 224, 102, 160, 32, 20, 220, 173, 118, 156, 160, 186, 39, 178, 85, 114, 199, 1, 175, 110, 231, 164, 181, 207, 226, 211, 207, 197, 103, 192, 231, 169, 7, 31, 173, 236, 136, 0, 202, 33, 64, 70, 94, 40, 39, 173, 0, 184, 235, 149, 38, 114, 174, 64, 41, 169, 52, 35, 3, 220, 120, 212, 120, 4, 42, 77, 207, 79, 193, 150, 235, 173, 162, 52, 17, 10, 202, 133, 191, 216, 13, 140, 74, 108, 103, 100, 200, 163, 17, 49, 160, 187, 103, 248, 96, 253, 77, 105, 131, 103, 42, 95, 191, 88, 209, 50, 160, 105, 139, 202, 43, 97, 50, 26, 30, 246, 14, 59, 113, 52, 80, 190, 126, 175, 105, 183, 125, 179, 110, 243, 12, 241, 170, 175, 177, 239, 180, 236, 191, 236, 207, 200, 146, 242, 177, 111, 230, 248, 217, 165, 22, 177, 141, 37, 195, 26, 114, 75, 214, 147, 164, 102, 103, 118, 98, 157, 244, 95, 119, 104, 120, 83, 171, 207, 94, 159, 77, 194, 79, 33, 180, 135, 64, 189, 172, 222, 13, 56, 159, 162, 87, 143, 240, 100, 13, 192, 41, 235, 237, 177, 51, 143, 168, 66, 84, 203, 203, 218, 101, 183, 245, 112, 39, 132, 202, 215, 3, 135, 140, 107, 252, 94, 251, 138, 121, 150, 222, 210, 190, 220, 66, 148, 210, 184, 174, 137, 209, 18, 51, 245, 225, 210, 6, 239, 227, 121, 159, 232, 42, 79, 202, 137, 121, 234, 90, 78, 183, 153, 217, 81, 159, 228, 166, 99, 52, 198, 117, 173, 141, 222, 31, 55, 65, 185, 125, 248, 49, 31, 179, 124, 105, 236, 176, 25, 154, 23, 153, 212, 85, 126, 166, 236, 33, 223, 139, 143, 10, 43, 207, 128, 147, 90, 123, 204, 191, 31, 53, 51, 149, 131, 183, 37, 69, 148, 81, 163, 182, 134, 123, 100, 119, 206, 72, 172, 119, 52, 13, 175, 212, 221, 30, 165, 103, 50, 165, 173, 66, 129, 214, 7, 232, 92, 91, 182, 32, 183, 103, 47, 161, 32, 5, 180, 101, 101, 228, 64, 33, 254, 203, 138, 243, 114, 176, 187, 69, 190, 180, 211, 13, 47, 187, 143, 119, 102, 191, 4, 66, 26, 42, 43, 42, 179, 248, 85, 106, 114, 18, 230, 89, 70, 201, 43, 136, 111, 127, 151, 28, 208, 172, 148, 179, 26, 12, 176, 39, 189, 193, 16, 13, 175, 207, 19, 170, 50, 52, 166, 182, 140, 62, 168, 59, 168, 40, 106, 56, 217, 158, 50, 236, 109, 60, 73, 255, 36, 211, 137, 31, 150, 17, 233, 148, 95, 243, 82, 147, 193, 146, 13, 249, 2, 85, 6, 65, 117, 203, 57, 115, 247, 43, 209, 151, 109, 14, 227, 8, 166, 201, 255, 228, 170, 127, 237, 115, 9, 168, 251, 144, 39, 208, 42, 252, 72, 44, 12, 109, 183, 226, 51, 33, 139, 205, 53, 94, 190, 4, 63, 36, 95, 133, 103, 179, 64, 209, 22, 90, 34, 96, 72, 1, 133, 159, 18, 114, 168, 62, 158, 145, 174, 136, 241, 172, 39, 254, 51, 40, 122, 173, 76, 177, 83, 17, 120, 2, 172, 40, 172, 96, 132, 92, 180, 57, 34, 113, 81, 194, 212, 190, 100, 106, 188, 201, 2, 183, 80, 162, 45, 159, 92, 207, 77, 194, 38, 101, 36, 21, 38, 227, 179, 172, 129, 128, 99, 134, 155, 1, 61, 95, 33, 115, 160, 112, 32, 99, 0, 59, 128, 188, 179, 254, 57, 42, 122, 182, 212, 2, 170, 55, 108, 104, 45, 103, 112, 79, 194, 186, 246, 217, 226, 110, 197, 254, 119, 83, 127, 243, 68, 47, 0, 171, 199, 141, 126, 202, 125, 9, 73, 225, 223, 5, 164, 67, 93, 235, 241, 5, 181, 234, 202, 200, 90, 100, 83, 212, 97, 27, 174, 235, 135, 187, 140, 182, 26, 206, 177, 201, 194, 79, 28, 138, 76, 216, 130, 100, 13, 47, 241, 172, 92, 245, 75, 9, 106, 211, 223, 197, 89, 18, 191, 177, 5, 41, 140, 150, 68, 154, 41, 133, 121, 2, 223, 164, 5, 151, 147, 197, 246, 180, 99, 5, 38, 18, 202, 71, 188, 204, 17, 252, 168, 60, 70, 177, 243, 120, 3, 77, 125, 5, 232, 166, 129, 178, 170, 134, 158, 66, 52, 110, 112, 235, 205, 122, 81, 193, 250, 106, 129, 45, 74, 18, 31, 60, 218, 221, 89, 217, 212, 213, 217, 244, 56, 198, 206, 49, 222, 222, 2, 119, 116, 117, 165, 51, 48, 212, 162, 200, 196, 6, 159, 215, 98, 28, 42, 220, 207, 207, 5, 14, 213, 227, 203, 107, 58, 70, 59, 122, 117, 180, 211, 140, 58, 253, 64, 36, 131, 141, 194, 138, 134, 198, 244, 178, 138, 156, 144, 206, 183, 196, 115, 52, 237, 215, 181, 129, 190, 238, 198, 140, 220, 36, 112, 252, 89, 163, 75, 196, 2, 137, 33, 74, 154, 119, 5, 171, 139, 128, 116, 144, 11, 192, 30, 41, 170, 253, 202, 222, 93, 148, 26, 213, 26, 173, 239, 41, 200, 110, 234, 173, 169, 209, 5, 208, 141, 195, 27, 111, 2, 208, 241, 33, 20, 56, 102, 199, 39, 160, 69, 20, 42, 86, 84, 188, 93, 174, 209, 239, 40, 123, 140, 182, 188, 24, 47, 82, 56, 107, 66, 90, 225, 218, 79, 242, 180, 54, 99, 113, 181, 21, 122, 12, 122, 99, 17, 83, 66, 18, 71, 62, 196, 101, 154, 97, 214, 115, 129, 78, 36, 45, 110, 72, 189, 251, 145, 158, 139, 189, 204, 120, 65, 92, 165, 202, 219, 59, 164, 71, 45, 194, 251, 146, 11, 12, 108, 216, 157, 159, 163, 27, 211, 160, 154, 229, 90, 225, 83, 145, 169, 58, 96, 42, 42, 42, 42, 121, 84, 35, 251, 240, 179, 161, 200, 194, 87, 46, 127, 190, 50, 233, 223, 217, 97, 98, 140, 166, 123, 90, 14, 15, 78, 205, 220, 176, 110, 1, 108, 203, 36, 152, 118, 20, 165, 215, 113, 141, 62, 66, 37, 4, 103, 174, 50, 33, 156, 170, 57, 232, 246, 187, 57, 244, 28, 171, 210, 97, 188, 59, 162, 141, 60, 49, 191, 167, 115, 39, 255, 6, 73, 140, 40, 194, 223, 110, 2, 234, 98, 110, 56, 238, 10, 192, 218, 21, 91, 37, 204, 123, 35, 93, 224, 102, 144, 197, 25, 112, 170, 247, 69, 94, 150, 105, 126, 136, 108, 228, 37, 93, 87, 229, 63, 136, 88, 229, 52, 69, 116, 63, 219, 154, 101, 239, 134, 26, 243, 91, 218, 36, 105, 234, 91, 41, 77, 253, 168, 174, 200, 243, 113, 35, 149, 233, 13, 157, 232, 204, 150, 206, 23, 173, 17, 103, 163, 87, 91, 211, 170, 59, 20, 223, 74, 38, 184, 18, 157, 67, 28, 200, 12, 114, 32, 146, 196, 64, 97, 40, 17, 197, 90, 158, 49, 68, 87, 170, 3, 133, 69, 241, 131, 211, 162, 48, 24, 122, 4, 196, 198, 147, 209, 237, 222, 184, 182, 17, 12, 15, 23, 133, 2, 200, 56, 248, 246, 62, 156, 59, 20, 116, 198, 220, 200, 55, 103, 24, 144, 156, 206, 214, 62, 46, 244, 115, 121, 36, 68, 112, 234, 81, 82, 147, 97, 1, 31, 218, 40, 207, 51, 26, 156, 27, 152, 185, 234, 21, 223, 169, 35, 213, 11, 179, 64, 129, 56, 122, 110, 24, 185, 188, 160, 242, 65, 191, 248, 86, 253, 12, 35, 138, 41, 198, 136, 173, 235, 34, 31, 29, 216, 49, 224, 153, 208, 165, 151, 6, 162, 154, 133, 152, 197, 104, 73, 76, 102, 226, 160, 125, 186, 204, 107, 119, 109, 8, 193, 223, 111, 219, 65, 73, 172, 253, 250, 220, 27, 196, 237, 54, 194, 191, 251, 218, 108, 225, 170, 63, 208, 57, 243, 14, 71, 146, 213, 165, 135, 219, 22, 219, 4, 152, 107, 164, 28, 116, 218, 114, 232, 187, 109, 37, 8, 177, 255, 29, 217, 113, 173, 141, 35, 91, 174, 232, 127, 89, 62, 238, 46, 215, 242, 48, 207, 59, 203, 99, 88, 80, 219, 10, 153, 129, 40, 137, 108, 70, 227, 240, 67, 21, 184, 171, 180, 13, 75, 111, 120, 60, 203, 23, 55, 183, 142, 220, 190, 100, 49, 125, 253, 87, 198, 192, 136, 121, 81, 104, 25, 43, 127, 34, 200, 110, 146, 66, 107, 135, 145, 195, 34, 106, 34, 63, 133, 197, 150, 137, 28, 38, 222, 2, 212, 255, 10, 97, 55, 141, 158, 172, 79, 102, 81, 206, 1, 236, 73, 175, 51, 196, 192, 106, 243, 114, 181, 181, 219, 250, 207, 208, 150, 209, 51, 102, 3, 213, 103, 27, 19, 198, 131, 181, 39, 60, 203, 191, 99, 91, 134, 90, 82, 144, 85, 218, 39, 100, 115, 3, 230, 31, 238, 227, 202, 10, 193, 77, 159, 239, 49, 85, 134, 53, 54, 97, 162, 235, 218, 139, 113, 38, 149, 156, 109, 101, 116, 47, 132, 253, 250, 243, 13, 4, 248, 240, 0, 146, 54, 205, 206, 172, 225, 54, 59, 196, 74, 57, 139, 205, 145, 184, 125, 2, 240, 115, 162, 61, 147, 152, 54, 126, 84, 85, 86, 50, 37, 6, 68, 23, 32, 11, 41, 204, 68, 39, 164, 225, 170, 51, 75, 58, 23, 204, 2, 161, 20, 18, 1, 137, 34, 99, 224, 49, 88, 48, 133, 198, 241, 236, 49, 10, 187, 213, 159, 31, 153, 77, 122, 195, 227, 109, 123, 1, 245, 230, 153, 176, 40, 219, 56, 218, 129, 154, 136, 78, 89, 200, 204, 40, 104, 124, 241, 4, 133, 77, 160, 217, 163, 92, 124, 92, 16, 194, 161, 24, 213, 22, 57, 20, 12, 27, 140, 130, 121, 248, 60, 8, 70, 107, 76, 168, 163, 26, 214, 149, 198, 196, 69, 98, 33, 134, 251, 9, 50, 226, 149, 26, 246, 137, 170, 191, 171, 232, 158, 185, 83, 27, 63, 178, 50, 43, 17, 148, 87, 151, 139, 193, 123, 159, 238, 128, 148, 115, 208, 218, 176, 243, 253, 225, 32, 23, 151, 192, 245, 224, 253, 191, 224, 203, 79, 15, 5, 146, 239, 3, 30, 185, 48, 18, 232, 188, 28, 168, 150, 104, 156, 168, 156, 8, 126, 122, 23, 68, 43, 54, 73, 11, 135, 68, 226, 68, 186, 68, 157, 39, 227, 189, 206, 196, 128, 93, 213, 105, 108, 241, 189, 198, 65, 170, 226, 116, 177, 154, 152, 94, 180, 104, 244, 206, 20, 171, 136, 131, 30, 98, 231, 6, 160, 84, 177, 13, 47, 94, 35, 243, 101, 169, 108, 244, 139, 66, 100, 94, 89, 193, 75, 244, 120, 114, 242, 248, 88, 40, 188, 237, 54, 25, 40, 134, 209, 92, 29, 117, 150, 201, 103, 233, 31, 215, 96, 74, 66, 120, 204, 213, 40, 54, 204, 201, 149, 135, 175, 8, 238, 183, 91, 104, 236, 26, 108, 25, 28, 201, 216, 231, 241, 214, 123, 132, 53, 52, 180, 49, 182, 246, 129, 136, 243, 175, 198, 1, 163, 202, 104, 189, 202, 153, 58, 149, 129, 186, 123, 179, 127, 225, 81, 98, 154, 16, 23, 1, 5, 147, 27, 94, 214, 83, 80, 101, 113, 84, 17, 101, 75, 153, 123, 99, 17, 25, 116, 7, 46, 47, 101, 140, 6, 211, 224, 190, 226, 96, 63, 125, 6, 13, 125, 52, 10, 134, 193, 4, 66, 208, 24, 56, 6, 129, 246, 6, 154, 160, 248, 193, 106, 174, 206, 50, 189, 94, 43, 7, 245, 10, 65, 199, 127, 156, 145, 117, 10, 173, 33, 1, 185, 204, 40, 62, 205, 89, 193, 131, 138, 167, 17, 145, 16, 41, 32, 90, 219, 177, 126, 33, 82, 124, 220, 251, 238, 69, 209, 76, 83, 231, 136, 3, 165, 174, 35, 114, 129, 229, 68, 249, 86, 16, 158, 134, 131, 229, 189, 207, 244, 179, 28, 0, 183, 90, 39, 255, 103, 20, 26, 109, 29, 164, 145, 131, 23, 50, 20, 193, 216, 183, 61, 219, 177, 93, 19, 112, 55, 127, 3, 247, 131, 36, 147, 42, 132, 106, 92, 89, 186, 189, 252, 240, 112, 7, 236, 217, 99, 45, 0, 0, 254, 152, 114, 60, 94, 185, 90, 250, 51, 183, 103, 122, 6, 104, 58, 202, 104, 61, 237, 242, 118, 180, 204, 189, 235, 241, 34, 113, 229, 102, 101, 76, 68, 137, 83, 188, 176, 173, 98, 213, 254, 31, 7, 32, 80, 203, 69, 84, 26, 29, 31, 151, 159, 41, 18, 229, 103, 197, 37, 148, 60, 47, 243, 112, 231, 62, 53, 28, 192, 46, 88, 25, 16, 99, 170, 246, 5, 38, 247, 7, 140, 106, 177, 13, 29, 143, 124, 114, 40, 85, 65, 185, 58, 24, 168, 22, 196, 22, 4, 161, 207, 98, 5, 9, 164, 40, 248, 27, 34, 173, 25, 234, 255, 120, 113, 171, 244, 173, 136, 151, 123, 210, 252, 66, 181, 98, 73, 244, 219, 125, 238, 234, 148, 158, 16, 59, 194, 148, 94, 239, 1, 253, 26, 100, 5, 39, 96, 222, 248, 105, 141, 65, 141, 58, 113, 228, 3, 251, 245, 17, 112, 148, 38, 74, 158, 252, 253, 0, 214, 246, 170, 45, 214, 34, 224, 133, 12, 121, 184, 63, 105, 56, 23, 147, 56, 220, 223, 155, 52, 152, 147, 147, 56, 168, 75, 59, 130, 31, 49, 83, 195, 86, 162, 46, 86, 216, 50, 220, 122, 202, 61, 100, 106, 225, 223, 225, 190, 16, 70, 56, 57, 41, 169, 222, 38, 146, 24, 58, 170, 185, 104, 241, 255, 5, 153, 206, 218, 167, 94, 124, 71, 85, 168, 121, 4, 81, 13, 91, 157, 112, 241, 145, 253, 213, 195, 222, 114, 247, 52, 37, 152, 153, 78, 218, 77, 76, 133, 224, 1, 231, 116, 134, 62, 99, 69, 12, 220, 193, 40, 209, 63, 183, 76, 71, 21, 91, 148, 226, 161, 240, 145, 204, 25, 188, 20, 4, 134, 8, 244, 211, 65, 6, 53, 239, 7, 86, 137, 46, 80, 128, 216, 222, 16, 46, 255, 113, 178, 240, 182, 80, 142, 252, 5, 90, 65, 79, 117, 237, 129, 166, 78, 169, 224, 253, 67, 161, 227, 242, 113, 218, 174, 175, 159, 210, 53, 211, 62, 91, 189, 150, 59, 234, 184, 160, 235, 16, 2, 178, 79, 197, 130, 126, 67, 47, 138, 182, 135, 70, 98, 199, 47, 234, 29, 177, 217, 71, 70, 69, 161, 63, 11, 104, 204, 83, 89, 82, 169, 159, 54, 94, 195, 18, 116, 26, 41, 115, 185, 233, 195, 200, 150, 55, 228, 67, 78, 152, 135, 96, 61, 96, 85, 93, 196, 97, 213, 87, 65, 231, 169, 150, 63, 238, 86, 148, 73, 38, 213, 201, 32, 77, 23, 61, 1, 101, 190, 214, 107, 139, 107, 28, 155, 44, 165, 158, 166, 39, 121, 223, 95, 252, 200, 232, 103, 185, 89, 252, 166, 174, 54, 52, 47, 115, 212, 247, 28, 202, 201, 232, 81, 33, 49, 232, 147, 230, 216, 55, 220, 209, 159, 194, 155, 238, 155, 149, 147, 21, 215, 21, 172, 1, 45, 15, 154, 245, 75, 25, 189, 54, 119, 88, 188, 27, 59, 92, 102, 157, 204, 158, 197, 80, 110, 19, 126, 47, 60, 60, 2, 99, 131, 182, 154, 53, 255, 83, 115, 139, 81, 70, 51, 155, 147, 85, 27, 90, 194, 66, 224, 142, 187, 182, 38, 220, 233, 231, 222, 57, 145, 177, 247, 25, 79, 105, 111, 193, 47, 239, 20, 247, 103, 184, 59, 150, 17, 18, 194, 81, 109, 161, 54, 108, 38, 77, 73, 92, 146, 156, 74, 149, 254, 229, 237, 14, 176, 28, 131, 121, 241, 170, 68, 111, 61, 58, 144, 60, 251, 43, 51, 182, 110, 37, 11, 249, 41, 243, 2, 246, 85, 55, 53, 108, 188, 91, 209, 29, 1, 163, 220, 210, 26, 107, 185, 111, 149, 136, 123, 212, 254, 206, 117, 99, 113, 194, 109, 238, 221, 55, 78, 27, 170, 97, 220, 235, 23, 225, 42, 98, 74, 29, 3, 16, 25, 30, 221, 136, 137, 110, 90, 193, 196, 126, 68, 95, 1, 209, 1, 245, 138, 157, 60, 179, 47, 108, 207, 63, 133, 14, 217, 249, 241, 255, 176, 143, 105, 125, 108, 39, 139, 37, 104, 82, 95, 248, 203, 232, 249, 219, 181, 251, 247, 230, 215, 29, 142, 175, 29, 77, 110, 136, 108, 126, 66, 252, 217, 23, 113, 178, 23, 188, 121, 107, 212, 194, 207, 218, 182, 127, 224, 104, 108, 228, 43, 142, 114, 106, 120, 216, 148, 142, 224, 42, 149, 111, 167, 46, 166, 98, 182, 11, 160, 51, 245, 106, 231, 178, 198, 174, 226, 42, 132, 139, 253, 146, 130, 205, 219, 207, 177, 188, 4, 126, 188, 109, 89, 92, 5, 55, 77, 228, 151, 151, 206, 80, 205, 162, 129, 219, 146, 226, 31, 107, 122, 122, 197, 106, 198, 250, 10, 131, 149, 132, 26, 184, 4, 91, 73, 14, 237, 207, 80, 95, 211, 7, 4, 172, 39, 104, 127, 113, 159, 87, 213, 8, 101, 198, 145, 250, 246, 229, 158, 210, 173, 122, 5, 212, 13, 73, 191, 150, 47, 170, 253, 81, 170, 137, 184, 156, 58, 151, 250, 234, 171, 143, 98, 173, 13, 167, 89, 188, 38, 107, 236, 34, 161, 66, 188, 206, 151, 205, 82, 108, 189, 200, 163, 118, 243, 97, 57, 214, 199, 85, 112, 15, 120, 251, 22, 60, 149, 162, 118, 183, 159, 210, 172, 190, 155, 132, 31, 201, 47, 15, 177, 48, 34, 86, 43, 214, 175, 116, 239, 237, 246, 7, 254, 54, 113, 82, 179, 60, 119, 170, 3, 129, 153, 184, 55, 145, 52, 0, 173, 191, 129, 224, 129, 136, 168, 216, 189, 113, 100, 178, 206, 193, 252, 84, 204, 78, 214, 21, 229, 59, 178, 230, 39, 121, 105, 47, 158, 62, 104, 25, 170, 238, 56, 118, 107, 246, 45, 89, 24, 140, 74, 236, 107, 14, 95, 103, 45, 213, 193, 23, 38, 179, 15, 27, 123, 212, 100, 24, 71, 211, 48, 81, 14, 158, 218, 91, 73, 175, 229, 236, 61, 113, 110, 132, 81, 182, 213, 222, 228, 52, 124, 119, 53, 27, 176, 7, 186, 209, 145, 53, 35, 179, 205, 71, 230, 70, 148, 0, 189, 147, 32, 219, 226, 0, 217, 74, 154, 129, 75, 56, 35, 195, 179, 13, 203, 50, 60, 143, 47, 40, 1, 19, 96, 201, 133, 158, 189, 52, 13, 215, 128, 2, 112, 39, 207, 11, 195, 13, 28, 162, 233, 252, 189, 173, 164, 137, 55, 61, 124, 52, 29, 47, 189, 179, 148, 17, 101, 53, 169, 137, 220, 253, 36, 162, 68, 165, 214, 93, 38, 125, 73, 173, 79, 244, 250, 119, 141, 36, 249, 52, 101, 164, 77, 106, 182, 65, 175, 153, 103, 113, 170, 65, 120, 40, 62, 198, 46, 158, 84, 121, 69, 20, 61, 147, 62, 186, 122, 0, 222, 119, 85, 126, 184, 113, 76, 237, 105, 120, 114, 253, 19, 211, 39, 7, 205, 91, 43, 107, 26, 132, 172, 15, 152, 40, 19, 81, 137, 121, 84, 249, 18, 7, 243, 147, 243, 18, 126, 199, 39, 101, 210, 164, 139, 41, 191, 124, 145, 161, 65, 217, 251, 67, 97, 62, 195, 177, 14, 90, 76, 75, 205, 67, 134, 255, 9, 217, 245, 90, 249, 40, 123, 25, 115, 169, 250, 249, 42, 50, 213, 126, 251, 230, 80, 24, 29, 75, 6, 173, 235, 123, 80, 63, 125, 244, 39, 62, 5, 26, 145, 167, 74, 47, 51, 99, 226, 81, 246, 69, 70, 18, 158, 27, 13, 250, 168, 147, 90, 76, 82, 198, 64, 19, 162, 70, 211, 81, 149, 1, 129, 236, 17, 255, 4, 96, 75, 100, 189, 245, 11, 67, 146, 209, 185, 62, 30, 250, 197, 154, 166, 241, 218, 167, 105, 71, 198, 251, 105, 152, 33, 189, 116, 227, 227, 195, 116, 122, 67, 238, 128, 175, 225, 46, 121, 234, 57, 64, 37, 132, 242, 248, 114, 232, 15, 206, 205, 251, 200, 112, 39, 2, 158, 105, 84, 84, 100, 89, 69, 178, 244, 193, 128, 237, 80, 112, 39, 141, 27, 185, 154, 51, 184, 247, 115, 240, 15, 206, 114, 76, 148, 132, 35, 218, 3, 16, 19, 51, 22, 244, 9, 225, 80, 255, 81, 148, 122, 1, 182, 225, 8, 150, 101, 232, 37, 107, 91, 74, 36, 169, 251, 75, 62, 215, 181, 154, 53, 114, 246, 86, 144, 47, 240, 47, 25, 5, 165, 18, 77, 76, 189, 87, 107, 24, 71, 132, 252, 245, 204, 220, 125, 204, 73, 163, 66, 195, 140, 119, 62, 86, 67, 134, 133, 77, 173, 226, 99, 45, 73, 35, 194, 67, 244, 36, 210, 110, 123, 194, 17, 207, 39, 24, 189, 175, 36, 85, 53, 238, 6, 255, 41, 236, 224, 244, 148, 251, 35, 111, 130, 150, 149, 167, 140, 150, 213, 224, 50, 255, 185, 128, 114, 220, 174, 218, 7, 149, 195, 92, 37, 112, 13, 217, 130, 170, 170, 236, 156, 250, 198, 180, 146, 106, 207, 198, 156, 186, 101, 116, 11, 32, 197, 221, 57, 155, 176, 16, 239, 214, 117, 3, 169, 160, 75, 93, 15, 179, 72, 38, 84, 131, 217, 173, 116, 137, 174, 107, 81, 107, 60, 205, 180, 175, 5, 40, 55, 210, 130, 55, 46, 102, 188, 220, 243, 89, 241, 73, 231, 121, 71, 24, 9, 65, 154, 115, 140, 154, 26, 150, 132, 208, 29, 64, 212, 105, 9, 152, 211, 192, 155, 98, 27, 101, 106, 39, 95, 235, 208, 41, 244, 246, 86, 101, 133, 133, 204, 190, 8, 70, 84, 208, 116, 108, 142, 205, 82, 35, 245, 118, 177, 105, 128, 227, 88, 13, 156, 51, 97, 193, 132, 228, 8, 141, 183, 196, 130, 44, 44, 155, 124, 171, 105, 254, 222, 168, 41, 123, 167, 224, 171, 241, 253, 168, 241, 196, 140, 112, 190, 93, 110, 32, 165, 40, 105, 98, 48, 126, 86, 214, 220, 80, 213, 96, 42, 200, 187, 252, 243, 58, 31, 11, 203, 157, 224, 139, 178, 128, 176, 248, 48, 19, 212, 102, 49, 152, 219, 200, 39, 181, 141, 52, 179, 147, 173, 142, 238, 20, 146, 101, 100, 22, 149, 107, 113, 88, 82, 205, 169, 53, 38, 67, 141, 216, 159, 55, 136, 40, 139, 146, 67, 66, 211, 201, 59, 221, 47, 33, 186, 101, 118, 232, 33, 44, 36, 186, 182, 31, 113, 98, 154, 91, 55, 115, 202, 212, 189, 221, 53, 12, 58, 163, 28, 171, 227, 182, 25, 77, 61, 253, 91, 126, 178, 43, 105, 39, 165, 20, 150, 101, 184, 36, 209, 21, 200, 198, 141, 94, 84, 58, 147, 50, 150, 199, 197, 15, 185, 224, 43, 62, 127, 139, 49, 9, 87, 239, 113, 41, 129, 125, 173, 79, 74, 10, 28, 239, 143, 156, 154, 176, 142, 229, 22, 226, 211, 70, 129, 72, 142, 166, 156, 18, 106, 18, 253, 247, 131, 203, 175, 43, 110, 166, 157, 200, 223, 154, 128, 47, 171, 163, 58, 116, 95, 253, 179, 14, 90, 54, 106, 41, 252, 22, 228, 105, 246, 200, 33, 169, 84, 206, 66, 190, 82, 133, 50, 193, 9, 248, 41, 92, 107, 76, 154, 80, 137, 241, 88, 99, 116, 147, 22, 60, 126, 208, 108, 135, 93, 254, 114, 50, 234, 66, 63, 63, 106, 223, 189, 249, 27, 6, 92, 55, 248, 8, 41, 49, 58, 119, 14, 247, 82, 251, 76, 65, 193, 1, 118, 149, 252, 37, 222, 138, 214, 70, 30, 123, 173, 44, 234, 200, 232, 30, 27, 42, 192, 103, 152, 240, 117, 174, 141, 18, 214, 224, 68, 114, 237, 74, 57, 200, 5, 53, 80, 149, 142, 204, 100, 104, 210, 197, 104, 72, 55, 195, 104, 168, 75, 37, 11, 181, 172, 110, 82, 97, 32, 3, 13, 76, 185, 24, 14, 233, 202, 16, 186, 205, 187, 212, 46, 142, 252, 20, 239, 7, 74, 19, 32, 87, 39, 65, 162, 247, 23, 37, 63, 176, 0, 146, 88, 4, 147, 57, 136, 45, 252, 18, 162, 211, 51, 108, 59, 217, 195, 69, 118, 81, 102, 18, 155, 70, 62, 182, 234, 33, 65, 67, 219, 37, 45, 60, 17, 230, 243, 123, 219, 123, 136, 177, 10, 58, 182, 188, 22, 203, 108, 245, 150, 24, 125, 167, 39, 243, 118, 77, 209, 217, 234, 228, 222, 60, 54, 13, 192, 122, 15, 118, 137, 255, 135, 164, 193, 68, 125, 212, 135, 121, 147, 227, 122, 68, 93, 34, 78, 97, 125, 220, 37, 153, 183, 63, 154, 244, 19, 237, 39, 211, 220, 27, 238, 33, 18, 70, 75, 249, 251, 162, 126, 64, 21, 199, 116, 137, 218, 16, 252, 222, 8, 207, 100, 251, 209, 139, 236, 177, 213, 209, 184, 247, 237, 122, 139, 93, 207, 76, 142, 39, 88, 147, 112, 10, 235, 239, 32, 44, 220, 55, 113, 18, 19, 192, 214, 42, 188, 164, 162, 246, 116, 77, 92, 193, 90, 200, 83, 252, 68, 182, 199, 223, 224, 184, 116, 26, 198, 106, 6, 20, 102, 131, 75, 147, 237, 126, 143, 62, 62, 189, 119, 75, 95, 125, 195, 16, 98, 196, 254, 91, 46, 14, 92, 101, 204, 186, 174, 165, 122, 74, 143, 104, 254, 239, 146, 230, 15, 55, 181, 225, 47, 242, 79, 31, 50, 93, 115, 9, 7, 53, 15, 185, 112, 221, 166, 130, 49, 147, 109, 110, 107, 119, 220, 10, 226, 7, 221, 247, 179, 245, 221, 89, 67, 139, 229, 102, 10, 131, 209, 158, 203, 36, 140, 63, 112, 92, 115, 183, 186, 63, 115, 252, 185, 79, 235, 75, 249, 78, 133, 79, 39, 68, 235, 9, 105, 153, 135, 202, 36, 122, 237, 146, 19, 181, 33, 142, 38, 141, 34, 193, 74, 0, 8, 9, 105, 30, 19, 180, 44, 66, 109, 230, 195, 235, 217, 165, 241, 60, 234, 142, 79, 228, 94, 246, 33, 169, 66, 94, 20, 48, 198, 75, 183, 25, 97, 173, 70, 73, 251, 203, 105, 58, 102, 247, 105, 138, 202, 115, 84, 226, 87, 184, 175, 242, 105, 219, 96, 72, 85, 43, 93, 30, 53, 163, 224, 119, 47, 18, 50, 46, 63, 18, 200, 92, 163, 107, 92, 42, 241, 49, 216, 71, 173, 57, 169, 121, 191, 132, 207, 113, 245, 195, 26, 255, 38, 71, 177, 110, 227, 36, 186, 254, 252, 188, 188, 6, 23, 154, 151, 54, 244, 232, 84, 142, 5, 96, 92, 164, 136, 64, 32, 88, 14, 90, 190, 164, 250, 126, 248, 166, 180, 225, 188, 113, 255, 79, 82, 145, 226, 123, 217, 130, 60, 104, 246, 47, 101, 236, 218, 222, 72, 227, 71, 130, 223, 57, 15, 95, 97, 117, 12, 167, 184, 245, 129, 78, 246, 33, 148, 252, 180, 113, 116, 12, 219, 219, 71, 89, 138, 90, 86, 137, 114, 183, 164, 6, 107, 72, 49, 178, 59, 106, 168, 222, 5, 93, 187, 129, 92, 135, 92, 56, 154, 68, 248, 154, 104, 192, 178, 90, 133, 78, 121, 174, 79, 101, 156, 167, 172, 167, 2, 104, 221, 147, 246, 252, 48, 73, 23, 202, 182, 90, 161, 176, 196, 154, 20, 47, 97, 169, 122, 248, 194, 64, 204, 177, 135, 6, 123, 20, 139, 38, 139, 130, 94, 99, 175, 14, 34, 110, 43, 218, 215, 235, 71, 246, 79, 22, 213, 146, 205, 25, 194, 104, 14, 62, 103, 117, 71, 197, 140, 22, 200, 60, 136, 172, 255, 253, 83, 240, 86, 252, 180, 223, 193, 130, 73, 161, 162, 18, 137, 171, 211, 40, 161, 207, 37, 21, 222, 133, 140, 8, 189, 219, 81, 46, 21, 149, 173, 123, 171, 171, 55, 199, 70, 201, 31, 51, 3, 189, 46, 63, 242, 150, 229, 20, 117, 117, 182, 151, 246, 181, 42, 119, 85, 19, 16, 79, 70, 255, 112, 44, 56, 232, 79, 194, 42, 14, 161, 249, 41, 148, 238, 103, 217, 52, 135, 239, 155, 231, 33, 6, 229, 107, 89, 227, 44, 222, 140, 176, 128, 111, 195, 8, 45, 221, 87, 93, 77, 138, 176, 130, 23, 81, 107, 101, 252, 82, 195, 18, 141, 185, 182, 248, 203, 17, 96, 163, 25, 252, 90, 142, 237, 141, 173, 75, 87, 212, 87, 147, 31, 59, 183, 85, 253, 232, 135, 141, 29, 223, 3, 54, 236, 137, 225, 223, 78, 35, 166, 217, 171, 112, 214, 162, 26, 108, 17, 167, 243, 177, 201, 176, 162, 242, 227, 127, 119, 120, 223, 239, 108, 103, 83, 221, 56, 169, 63, 183, 88, 225, 242, 94, 94, 243, 198, 25, 116, 241, 121, 113, 199, 76, 7, 162, 212, 115, 208, 4, 48, 238, 221, 141, 59, 198, 185, 12, 184, 44, 80, 78, 144, 199, 85, 153, 113, 213, 78, 172, 125, 124, 170, 206, 121, 24, 231, 147, 253, 98, 180, 200, 10, 144, 228, 80, 59, 97, 122, 156, 30, 186, 248, 221, 229, 25, 121, 94, 198, 111, 14, 77, 33, 208, 102, 196, 215, 41, 198, 11, 53, 124, 75, 74, 122, 167, 240, 225, 138, 182, 30, 52, 196, 228, 250, 161, 231, 51, 76, 112, 71, 64, 215, 177, 222, 167, 104, 69, 117, 51, 105, 215, 185, 254, 243, 32, 68, 183, 14, 77, 158, 125, 123, 129, 95, 208, 6, 147, 21, 183, 78, 66, 90, 211, 32, 18, 215, 144, 171, 84, 49, 200, 217, 93, 32, 118, 115, 250, 133, 200, 199, 194, 210, 251, 37, 16, 60, 232, 102, 156, 100, 81, 73, 231, 241, 135, 181, 189, 131, 47, 222, 104, 21, 216, 197, 161, 221, 51, 110, 255, 140, 147, 39, 196, 223, 215, 104, 247, 255, 57, 141, 74, 123, 17, 224, 117, 197, 203, 55, 37, 53, 251, 104, 123, 123, 65, 95, 173, 200, 157, 218, 51, 236, 12, 150, 128, 24, 220, 84, 86, 41, 62, 122, 17, 187, 7, 238, 236, 54, 92, 25, 165, 159, 20, 181, 97, 76, 252, 56, 214, 237, 59, 131, 126, 200, 55, 109, 156, 21, 107, 41, 54, 126, 16, 131, 41, 83, 241, 70, 65, 215, 212, 134, 172, 65, 225, 85, 240, 93, 219, 172, 243, 130, 181, 122, 148, 80, 133, 198, 111, 227, 151, 93, 93, 83, 183, 187, 223, 49, 230, 135, 141, 131, 105, 135, 179, 82, 76, 110, 168, 104, 18, 188, 216, 127, 7, 186, 154, 254, 44, 247, 101, 203, 245, 138, 93, 151, 66, 210, 145, 175, 179, 227, 172, 226, 205, 101, 237, 135, 105, 177, 187, 71, 32, 123, 164, 47, 188, 237, 12, 221, 241, 6, 154, 240, 146, 152, 19, 115, 184, 228, 161, 151, 114, 159, 253, 82, 7, 26, 26, 186, 11, 242, 106, 122, 235, 163, 89, 103, 108, 125, 242, 189, 32, 140, 105, 247, 204, 163, 11, 71, 158, 207, 49, 231, 135, 184, 121, 147, 171, 56, 185, 192, 176, 78, 223, 199, 75, 170, 235, 73, 123, 133, 190, 43, 125, 114, 93, 68, 223, 78, 190, 177, 147, 218, 220, 189, 23, 23, 244, 118, 58, 3, 18, 239, 21, 78, 186, 34, 126, 11, 15, 173, 232, 237, 10, 158, 149, 87, 190, 80, 86, 170, 72, 136, 197, 245, 180, 97, 9, 219, 60, 135, 239, 137, 10, 103, 27, 187, 254, 30, 226, 215, 154, 181, 85, 188, 73, 27, 136, 7, 37, 154, 249, 151, 227, 15, 77, 253, 222, 197, 61, 207, 167, 152, 164, 80, 141, 22, 125, 55, 170, 246, 208, 68, 250, 246, 172, 31, 120, 62, 163, 190, 158, 28, 139, 98, 173, 45, 158, 120, 62, 199, 248, 62, 75, 159, 151, 159, 239, 97, 43, 57, 62, 215, 244, 122, 95, 104, 120, 255, 12, 75, 40, 250, 164, 186, 153, 52, 80, 200, 187, 98, 3, 33, 1, 186, 66, 102, 112, 93, 174, 49, 252, 241, 115, 22, 45, 169, 175, 39, 239, 66, 32, 189, 13, 165, 47, 175, 126, 116, 13, 120, 199, 173, 76, 143, 47, 64, 20, 26, 73, 20, 59, 228, 103, 129, 183, 131, 210, 47, 80, 148, 104, 248, 196, 123, 89, 177, 217, 250, 99, 195, 45, 21, 37, 39, 57, 245, 45, 204, 217, 10, 44, 70, 49, 4, 72, 169, 109, 4, 38, 92, 243, 83, 244, 3, 69, 45, 252, 185, 81, 131, 244, 45, 17, 215, 107, 95, 198, 219, 45, 223, 176, 175, 16, 39, 23, 218, 78, 113, 215, 195, 39, 207, 149, 242, 176, 21, 173, 136, 70, 193, 4, 239, 95, 254, 245, 240, 9, 31, 190, 217, 50, 212, 86, 86, 164, 132, 128, 172, 68, 170, 5, 134, 131, 239, 108, 249, 56, 249, 251, 71, 234, 66, 195, 191, 184, 8, 98, 78, 69, 248, 177, 68, 214, 102, 112, 91, 140, 73, 144, 110, 65, 44, 202, 90, 113, 107, 255, 59, 104, 207, 112, 121, 117, 147, 102, 86, 100, 99, 104, 222, 25, 221, 35, 250, 223, 255, 246, 181, 29, 192, 70, 15, 144, 175, 40, 205, 20, 132, 35, 124, 2, 135, 85, 91, 155, 69, 94, 241, 87, 24, 151, 250, 70, 24, 249, 130, 248, 134, 115, 132, 68, 242, 254, 208, 10, 45, 79, 163, 78, 3, 108, 94, 159, 237, 235, 123, 31, 244, 159, 14, 178, 209, 208, 175, 109, 142, 206, 169, 238, 171, 25, 137, 57, 225, 141, 252, 219, 53, 219, 182, 215, 238, 45, 53, 234, 136, 92, 31, 83, 250, 175, 229, 253, 23, 89, 31, 255, 85, 82, 202, 133, 82, 134, 213, 104, 204, 182, 241, 247, 102, 41, 158, 172, 147, 235, 41, 215, 32, 53, 4, 8, 76, 48, 98, 75, 64, 142, 195, 239, 15, 235, 70, 218, 55, 138, 247, 24, 92, 166, 232, 22, 68, 50, 203, 217, 47, 207, 164, 136, 124, 125, 93, 233, 80, 196, 64, 54, 188, 25, 39, 89, 93, 209, 113, 252, 97, 249, 127, 227, 67, 204, 172, 198, 92, 216, 239, 193, 77, 25, 169, 126, 94, 151, 31, 251, 38, 228, 84, 245, 182, 4, 132, 135, 243, 64, 53, 199, 136, 23, 127, 166, 127, 3, 23, 142, 47, 137, 72, 121, 180, 201, 189, 139, 164, 165, 30, 42, 19, 104, 239, 111, 81, 93, 184, 203, 210, 89, 138, 202, 243, 132, 68, 2, 214, 79, 231, 90, 155, 223, 17, 77, 125, 212, 115, 169, 178, 211, 198, 248, 62, 31, 234, 134, 152, 164, 91, 155, 88, 252, 242, 72, 96, 68, 233, 221, 140, 147, 172, 171, 172, 89, 255, 72, 59, 162, 84, 161, 126, 249, 218, 52, 72, 63, 250, 202, 35, 223, 36, 153, 100, 130, 168, 9, 71, 97, 204, 190, 225, 20, 125, 167, 18, 255, 223, 250, 168, 219, 152, 92, 39, 45, 243, 80, 158, 64, 139, 161, 57, 70, 164, 1, 202, 227, 111, 9, 246, 205, 10, 230, 200, 115, 43, 162, 173, 46, 107, 248, 205, 35, 46, 39, 111, 169, 15, 114, 227, 24, 179, 123, 234, 71, 88, 218, 129, 108, 164, 101, 158, 16, 191, 241, 80, 157, 66, 31, 72, 203, 16, 71, 80, 61, 11, 52, 27, 106, 235, 121, 252, 197, 118, 159, 165, 170, 60, 75, 72, 244, 63, 246, 123, 111, 239, 103, 145, 77, 241, 12, 61, 107, 74, 218, 2, 126, 113, 158, 174, 196, 171, 125, 144, 110, 178, 202, 172, 247, 96, 115, 171, 52, 75, 254, 26, 74, 40, 31, 158, 30, 129, 58, 12, 87, 182, 183, 168, 167, 225, 27, 131, 179, 234, 188, 48, 239, 189, 86, 34, 84, 96, 58, 57, 194, 14, 96, 195, 135, 200, 87, 164, 213, 229, 213, 216, 254, 110, 171, 117, 27, 171, 105, 126, 5, 143, 201, 144, 170, 116, 80, 42, 160, 174, 182, 94, 93, 225, 197, 179, 15, 3, 198, 116, 172, 200, 115, 171, 172, 254, 227, 48, 57, 37, 221, 234, 208, 130, 218, 49, 55, 89, 163, 249, 117, 119, 199, 7, 210, 62, 73, 187, 119, 90, 80, 134, 191, 239, 124, 55, 224, 126, 12, 217, 59, 48, 119, 6, 33, 190, 93, 200, 73, 223, 38, 125, 214, 120, 85, 97, 114, 213, 197, 254, 150, 132, 235, 64, 91, 69, 134, 68, 91, 36, 134, 174, 248, 103, 212, 172, 195, 100, 72, 92, 251, 106, 168, 161, 248, 71, 91, 177, 186, 79, 61, 159, 98, 206, 225, 160, 68, 196, 165, 238, 237, 145, 177, 240, 46, 28, 4, 162, 8, 115, 117, 150, 219, 43, 80, 68, 133, 119, 183, 222, 224, 122, 73, 185, 9, 29, 120, 54, 193, 238, 33, 180, 52, 54, 161, 246, 90, 225, 188, 32, 235, 175, 52, 242, 167, 227, 198, 104, 45, 6, 197, 168, 191, 246, 67, 79, 254, 28, 126, 92, 249, 135, 117, 37, 155, 209, 198, 234, 146, 216, 26, 111, 233, 100, 210, 100, 125, 96, 70, 238, 104, 208, 76, 169, 76, 32, 253, 193, 241, 151, 229, 85, 209, 35, 166, 120, 196, 27, 35, 146, 165, 145, 209, 237, 158, 179, 205, 183, 59, 179, 139, 97, 211, 8, 59, 180, 160, 189, 241, 241, 177, 202, 200, 130, 111, 39, 254, 178, 24, 26, 21, 174, 241, 244, 151, 176, 39, 237, 182, 212, 212, 226, 163, 94, 106, 186, 32, 211, 38, 66, 114, 4, 131, 31, 43, 136, 72, 203, 209, 223, 209, 58, 187, 60, 185, 20, 217, 169, 31, 196, 242, 33, 29, 119, 20, 158, 124, 17, 219, 75, 212, 205, 123, 227, 249, 116, 234, 21, 170, 255, 201, 113, 68, 117, 110, 79, 7, 190, 107, 240, 121, 42, 187, 216, 39, 61, 98, 80, 38, 202, 95, 214, 59, 137, 97, 252, 155, 100, 160, 58, 189, 254, 45, 150, 11, 216, 196, 116, 164, 137, 40, 135, 40, 246, 65, 188, 48, 150, 41, 206, 153, 38, 172, 140, 109, 77, 175, 124, 222, 89, 35, 90, 184, 179, 212, 103, 205, 122, 69, 165, 229, 232, 191, 208, 170, 171, 157, 221, 46, 35, 202, 35, 246, 198, 220, 175, 200, 105, 141, 207, 123, 169, 31, 92, 182, 88, 83, 110, 128, 153, 118, 181, 93, 133, 101, 173, 237, 190, 78, 233, 157, 84, 2, 250, 65, 114, 82, 119, 243, 72, 70, 44, 161, 22, 130, 138, 250, 238, 50, 222, 253, 237, 76, 199, 91, 208, 139, 39, 158, 79, 49, 223, 203, 19, 174, 66, 190, 103, 119, 140, 142, 204, 197, 200, 88, 213, 190, 249, 39, 58, 130, 100, 189, 238, 232, 159, 38, 89, 251, 148, 67, 198, 109, 176, 189, 99, 7, 255, 230, 246, 182, 207, 124, 123, 252, 91, 81, 114, 239, 156, 18, 40, 150, 71, 34, 247, 43, 252, 164, 186, 158, 180, 173, 236, 208, 102, 123, 184, 164, 213, 152, 72, 95, 82, 142, 141, 97, 8, 4, 49, 146, 172, 105, 194, 202, 200, 230, 251, 15, 159, 54, 222, 189, 11, 206, 6, 253, 43, 25, 134, 44, 113, 220, 64, 212, 76, 160, 3, 189, 30, 27, 27, 201, 21, 178, 162, 15, 42, 82, 185, 178, 182, 182, 125, 110, 54, 65, 241, 123, 44, 234, 48, 146, 53, 199, 73, 94, 178, 101, 14, 114, 148, 217, 87, 222, 24, 193, 226, 9, 34, 43, 140, 143, 174, 207, 152, 244, 250, 9, 46, 251, 78, 86, 252, 24, 92, 94, 76, 36, 223, 191, 95, 148, 47, 125, 158, 34, 26, 241, 124, 183, 73, 64, 224, 60, 30, 49, 68, 136, 78, 197, 219, 166, 213, 120, 60, 105, 65, 144, 143, 28, 2, 231, 220, 233, 231, 38, 156, 54, 246, 110, 121, 112, 224, 53, 219, 221, 183, 227, 19, 67, 192, 104, 149, 1, 63, 71, 146, 142, 6, 51, 29, 179, 148, 48, 24, 170, 111, 111, 241, 181, 205, 42, 248, 136, 145, 233, 162, 16, 225, 104, 255, 232, 240, 219, 186, 225, 218, 188, 210, 212, 56, 117, 223, 214, 56, 127, 14, 139, 199, 99, 74, 51, 167, 207, 86, 198, 190, 78, 207, 127, 218, 154, 24, 127, 60, 60, 175, 119, 181, 69, 217, 253, 130, 113, 112, 99, 98, 156, 215, 115, 165, 163, 219, 211, 32, 142, 193, 19, 156, 188, 100, 123, 164, 117, 238, 195, 148, 50, 240, 202, 213, 63, 119, 232, 196, 185, 187, 240, 187, 94, 48, 78, 50, 245, 48, 240, 148, 162, 160, 34, 219, 147, 245, 172, 190, 126, 8, 183, 127, 28, 41, 123, 231, 75, 121, 198, 229, 78, 151, 169, 185, 142, 194, 238, 59, 204, 76, 95, 15, 4, 88, 201, 186, 216, 161, 131, 254, 251, 201, 36, 70, 11, 32, 27, 105, 125, 242, 101, 225, 135, 181, 62, 232, 233, 74, 131, 67, 103, 169, 95, 167, 71, 65, 198, 228, 184, 83, 166, 153, 249, 139, 55, 156, 29, 182, 170, 3, 94, 155, 250, 0, 189, 234, 115, 159, 146, 130, 235, 125, 99, 179, 172, 12, 30, 91, 69, 138, 131, 57, 145, 18, 30, 11, 82, 200, 218, 213, 161, 22, 254, 201, 30, 153, 87, 99, 189, 142, 224, 184, 10, 175, 66, 117, 163, 26, 66, 114, 245, 124, 247, 46, 131, 226, 77, 57, 43, 95, 209, 89, 243, 89, 16, 215, 187, 147, 88, 166, 8, 89, 104, 125, 58, 186, 210, 23, 199, 211, 186, 42, 23, 72, 136, 214, 43, 242, 63, 224, 187, 194, 18, 114, 244, 247, 233, 251, 42, 100, 106, 238, 151, 112, 123, 221, 183, 180, 246, 43, 81, 191, 192, 203, 241, 83, 36, 196, 80, 31, 97, 2, 53, 0, 9, 99, 23, 188, 254, 16, 120, 231, 83, 45, 131, 13, 144, 166, 223, 217, 66, 11, 23, 188, 20, 226, 189, 179, 210, 73, 105, 153, 8, 78, 120, 36, 185, 208, 52, 93, 111, 20, 167, 28, 242, 80, 155, 217, 83, 97, 100, 207, 255, 100, 228, 233, 194, 63, 11, 117, 76, 145, 70, 74, 73, 123, 218, 170, 243, 41, 208, 200, 253, 56, 103, 12, 63, 76, 24, 12, 196, 198, 83, 102, 224, 138, 56, 77, 115, 55, 131, 165, 145, 17, 41, 90, 231, 164, 252, 81, 76, 12, 168, 173, 174, 8, 152, 17, 79, 155, 211, 131, 167, 111, 70, 42, 52, 85, 231, 113, 130, 126, 70, 123, 167, 130, 194, 99, 14, 112, 83, 104, 56, 101, 45, 109, 193, 247, 173, 145, 17, 60, 120, 227, 209, 19, 146, 12, 201, 214, 90, 202, 95, 252, 18, 108, 207, 140, 144, 210, 66, 79, 233, 35, 199, 142, 90, 12, 69, 66, 60, 185, 182, 83, 128, 128, 43, 111, 149, 64, 109, 164, 66, 69, 205, 75, 189, 91, 71, 10, 70, 201, 8, 104, 155, 129, 87, 128, 161, 41, 205, 145, 157, 33, 17, 161, 32, 106, 245, 174, 78, 150, 39, 92, 117, 189, 86, 8, 157, 147, 238, 222, 137, 101, 118, 255, 120, 118, 230, 150, 126, 112, 215, 123, 255, 152, 182, 244, 159, 44, 104, 240, 17, 82, 205, 224, 179, 153, 79, 207, 129, 115, 188, 186, 114, 121, 13, 82, 249, 211, 35, 192, 145, 76, 16, 50, 185, 227, 99, 98, 217, 115, 200, 96, 194, 20, 178, 240, 249, 149, 158, 30, 228, 229, 4, 253, 204, 113, 89, 24, 127, 204, 57, 70, 145, 158, 174, 227, 50, 17, 37, 107, 233, 54, 221, 228, 5, 173, 212, 199, 177, 140, 70, 69, 134, 219, 144, 193, 232, 68, 18, 63, 230, 144, 9, 9, 146, 211, 17, 33, 124, 104, 157, 115, 117, 175, 241, 245, 211, 130, 174, 246, 232, 93, 115, 172, 73, 246, 16, 115, 189, 151, 111, 186, 114, 120, 214, 64, 152, 215, 132, 254, 226, 215, 149, 22, 215, 208, 99, 241, 212, 71, 164, 247, 72, 115, 130, 164, 253, 246, 141, 155, 190, 26, 188, 97, 191, 20, 246, 46, 172, 172, 66, 116, 160, 254, 24, 51, 222, 200, 233, 75, 241, 63, 75, 136, 219, 146, 196, 97, 155, 90, 88, 248, 191, 128, 63, 76, 109, 62, 193, 207, 52, 139, 219, 38, 14, 255, 147, 189, 143, 74, 37, 36, 11, 45, 32, 255, 119, 2, 85, 255, 255, 0, 179, 184, 188, 153, 251, 81, 193, 255, 145, 83, 172, 35, 249, 182, 250, 192, 171, 3, 3, 181, 146, 195, 144, 101, 202, 250, 214, 249, 242, 230, 169, 235, 22, 1, 111, 143, 137, 68, 152, 189, 199, 185, 213, 4, 103, 21, 153, 89, 228, 39, 59, 9, 210, 67, 245, 84, 3, 104, 22, 100, 115, 164, 167, 169, 129, 71, 68, 105, 160, 88, 152, 232, 104, 23, 212, 96, 166, 237, 38, 53, 41, 32, 104, 30, 98, 154, 234, 134, 137, 106, 99, 0, 162, 231, 174, 55, 223, 245, 230, 98, 206, 197, 57, 200, 197, 140, 26, 121, 21, 87, 66, 134, 23, 217, 68, 225, 243, 99, 229, 163, 253, 177, 42, 135, 201, 83, 40, 31, 85, 110, 204, 31, 138, 211, 82, 125, 147, 93, 248, 252, 164, 31, 196, 156, 57, 234, 252, 16, 116, 90, 171, 115, 161, 203, 246, 49, 42, 7, 157, 106, 12, 172, 148, 224, 118, 89, 170, 244, 61, 150, 80, 72, 14, 42, 219, 49, 202, 4, 30, 192, 126, 238, 237, 29, 0, 251, 82, 253, 91, 64, 88, 104, 74, 20, 173, 142, 170, 246, 171, 109, 147, 240, 253, 15, 130, 242, 56, 40, 188, 246, 237, 215, 70, 187, 18, 141, 9, 21, 27, 2, 58, 166, 211, 243, 16, 126, 205, 232, 61, 163, 89, 175, 146, 206, 211, 72, 54, 201, 30, 77, 248, 135, 96, 36, 243, 21, 19, 201, 187, 246, 208, 152, 113, 61, 48, 96, 141, 115, 1, 52, 212, 6, 93, 54, 20, 74, 14, 237, 251, 55, 194, 96, 224, 41, 76, 239, 230, 53, 14, 115, 157, 96, 195, 64, 197, 97, 174, 161, 26, 233, 22, 93, 136, 218, 204, 160, 138, 202, 74, 19, 133, 41, 113, 194, 70, 225, 123, 27, 5, 151, 38, 12, 67, 60, 39, 56, 158, 218, 4, 181, 52, 209, 163, 69, 83, 20, 80, 27, 217, 57, 51, 126, 120, 37, 183, 95, 121, 177, 135, 100, 255, 118, 159, 254, 229, 53, 48, 254, 235, 8, 201, 219, 52, 101, 198, 236, 76, 151, 168, 225, 244, 46, 166, 232, 118, 166, 46, 74, 115, 227, 166, 250, 50, 222, 46, 31, 54, 32, 201, 64, 208, 207, 227, 16, 116, 243, 60, 82, 190, 67, 218, 3, 244, 40, 227, 99, 220, 126, 229, 99, 30, 146, 189, 113, 65, 119, 237, 131, 182, 140, 106, 20, 25, 31, 170, 255, 30, 96, 65, 80, 34, 217, 123, 204, 149, 180, 31, 138, 134, 149, 244, 192, 248, 85, 200, 229, 70, 14, 138, 144, 207, 210, 11, 2, 95, 73, 122, 161, 252, 95, 198, 39, 249, 209, 8, 8, 156, 183, 233, 187, 41, 1, 145, 50, 205, 111, 93, 79, 167, 144, 108, 58, 61, 36, 251, 231, 101, 174, 77, 4, 58, 243, 70, 178, 169, 192, 161, 206, 21, 107, 42, 250, 67, 105, 59, 223, 205, 219, 104, 66, 164, 222, 99, 194, 206, 237, 9, 51, 2, 103, 106, 224, 228, 41, 251, 255, 89, 122, 1, 231, 185, 236, 90, 172, 165, 84, 62, 86, 38, 134, 74, 169, 246, 128, 134, 175, 223, 84, 128, 14, 134, 66, 223, 155, 31, 3, 44, 31, 124, 83, 224, 43, 25, 158, 82, 126, 183, 204, 117, 73, 112, 3, 79, 122, 239, 109, 52, 209, 252, 131, 250, 8, 77, 186, 84, 197, 134, 176, 106, 54, 251, 96, 174, 53, 108, 253, 49, 61, 167, 245, 37, 30, 124, 3, 72, 252, 156, 166, 247, 115, 230, 105, 95, 217, 116, 87, 149, 243, 248, 19, 10, 201, 79, 111, 82, 112, 131, 29, 180, 7, 185, 208, 145, 231, 58, 6, 132, 251, 93, 0, 138, 101, 142, 139, 6, 105, 248, 206, 180, 215, 77, 22, 30, 79, 241, 63, 72, 243, 230, 117, 52, 101, 202, 140, 60, 241, 114, 149, 236, 93, 68, 67, 115, 217, 159, 53, 205, 34, 17, 57, 157, 146, 114, 7, 61, 152, 127, 131, 250, 91, 104, 130, 81, 93, 81, 183, 157, 132, 231, 200, 95, 29, 250, 83, 254, 234, 83, 168, 198, 97, 205, 42, 65, 35, 115, 141, 224, 148, 207, 6, 111, 26, 233, 20, 119, 57, 63, 222, 45, 8, 169, 64, 15, 231, 63, 58, 6, 96, 191, 44, 58, 41, 103, 61, 214, 168, 164, 226, 18, 211, 131, 77, 5, 190, 146, 11, 83, 202, 141, 253, 2, 19, 231, 5, 15, 106, 172, 203, 88, 7, 90, 80, 66, 229, 63, 196, 49, 90, 116, 65, 60, 248, 191, 198, 62, 16, 241, 130, 246, 249, 88, 143, 187, 55, 169, 112, 236, 173, 53, 193, 41, 36, 187, 191, 149, 72, 246, 107, 229, 188, 66, 166, 133, 108, 6, 141, 218, 87, 244, 81, 174, 120, 93, 138, 143, 144, 246, 72, 11, 185, 248, 150, 247, 160, 196, 215, 180, 112, 215, 95, 112, 12, 246, 237, 80, 122, 106, 57, 127, 15, 232, 45, 65, 224, 231, 208, 60, 149, 179, 151, 175, 164, 105, 74, 185, 135, 159, 71, 231, 84, 222, 113, 101, 1, 83, 129, 237, 154, 120, 194, 41, 136, 209, 205, 170, 49, 158, 146, 162, 114, 166, 77, 26, 116, 12, 75, 56, 197, 245, 95, 83, 148, 49, 227, 23, 255, 133, 27, 8, 176, 169, 160, 80, 188, 83, 217, 1, 239, 33, 185, 22, 46, 236, 6, 46, 158, 82, 209, 231, 18, 55, 189, 32, 109, 29, 235, 188, 34, 217, 168, 179, 78, 181, 90, 17, 133, 72, 39, 44, 233, 254, 20, 183, 24, 89, 172, 112, 131, 207, 94, 138, 55, 169, 166, 199, 244, 203, 17, 17, 74, 29, 239, 86, 253, 223, 21, 211, 116, 37, 140, 87, 230, 206, 236, 22, 23, 117, 161, 91, 253, 117, 37, 197, 200, 246, 178, 232, 154, 85, 94, 60, 11, 103, 91, 150, 11, 230, 179, 35, 31, 67, 58, 18, 230, 104, 40, 3, 82, 33, 70, 24, 230, 33, 2, 145, 136, 66, 52, 226, 145, 146, 37, 191, 190, 12, 173, 174, 164, 179, 117, 113, 254, 164, 218, 15, 50, 222, 72, 255, 225, 205, 116, 189, 110, 9, 230, 238, 67, 158, 184, 83, 112, 119, 193, 105, 54, 113, 194, 44, 86, 117, 134, 14, 154, 83, 96, 156, 247, 54, 192, 120, 216, 245, 239, 84, 71, 188, 11, 71, 39, 164, 102, 147, 156, 169, 166, 240, 17, 123, 97, 101, 137, 49, 203, 239, 49, 33, 46, 138, 215, 207, 182, 100, 66, 184, 169, 118, 171, 98, 239, 8, 58, 253, 54, 26, 71, 222, 106, 200, 5, 82, 86, 107, 181, 75, 140, 167, 136, 24, 136, 163, 117, 200, 50, 68, 15, 222, 141, 185, 64, 76, 117, 7, 89, 164, 198, 154, 235, 25, 51, 221, 31, 76, 221, 80, 128, 76, 20, 173, 45, 42, 96, 173, 212, 212, 123, 4, 149, 133, 194, 117, 69, 221, 138, 23, 31, 202, 233, 237, 134, 70, 159, 80, 125, 106, 211, 91, 223, 223, 208, 247, 32, 195, 8, 169, 84, 131, 231, 8, 202, 74, 235, 14, 236, 40, 157, 199, 55, 154, 97, 195, 200, 232, 94, 191, 7, 25, 157, 18, 90, 116, 241, 20, 217, 93, 100, 92, 65, 224, 29, 142, 174, 105, 129, 84, 126, 66, 184, 158, 254, 244, 233, 251, 97, 93, 29, 49, 189, 55, 246, 203, 179, 238, 250, 187, 17, 52, 212, 83, 122, 234, 98, 187, 236, 74, 106, 254, 25, 77, 223, 101, 108, 204, 178, 60, 80, 248, 131, 134, 165, 220, 230, 226, 182, 138, 123, 94, 223, 36, 250, 91, 35, 166, 62, 252, 222, 84, 154, 199, 254, 240, 27, 197, 239, 61, 116, 145, 169, 4, 59, 140, 100, 228, 81, 71, 61, 40, 154, 1, 118, 7, 251, 145, 37, 46, 254, 44, 251, 94, 179, 220, 121, 127, 156, 241, 255, 107, 71, 149, 107, 155, 255, 139, 208, 107, 51, 62, 61, 84, 215, 91, 23, 187, 75, 73, 83, 216, 111, 189, 39, 73, 135, 144, 241, 175, 28, 169, 232, 144, 61, 83, 210, 250, 37, 86, 169, 195, 189, 240, 13, 108, 219, 130, 220, 254, 253, 4, 171, 181, 106, 216, 1, 18, 76, 120, 215, 185, 132, 51, 199, 214, 116, 44, 40, 44, 55, 251, 59, 104, 156, 73, 123, 235, 199, 136, 71, 194, 9, 33, 35, 10, 43, 244, 140, 241, 2, 31, 63, 200, 195, 39, 165, 253, 207, 128, 184, 117, 12, 108, 54, 20, 92, 166, 204, 214, 133, 223, 37, 231, 196, 255, 140, 255, 114, 23, 114, 170, 209, 16, 164, 161, 233, 133, 173, 199, 214, 77, 212, 244, 30, 237, 186, 153, 116, 101, 98, 215, 227, 149, 130, 160, 77, 189, 16, 152, 235, 155, 239, 29, 122, 18, 221, 230, 46, 237, 58, 184, 184, 150, 182, 228, 43, 14, 102, 122, 0, 122, 145, 158, 118, 66, 146, 9, 69, 244, 69, 123, 58, 139, 93, 249, 188, 52, 90, 191, 128, 131, 121, 193, 65, 214, 73, 165, 19, 187, 75, 187, 232, 165, 152, 32, 178, 163, 52, 220, 249, 191, 86, 190, 92, 207, 25, 22, 173, 203, 13, 180, 100, 56, 37, 75, 186, 88, 217, 210, 34, 116, 62, 184, 180, 118, 254, 91, 111, 255, 17, 230, 226, 79, 236, 230, 56, 100, 27, 228, 47, 78, 239, 205, 197, 218, 159, 150, 82, 159, 92, 97, 71, 58, 38, 121, 15, 171, 74, 84, 48, 214, 183, 240, 87, 107, 170, 186, 218, 55, 107, 210, 55, 171, 203, 95, 147, 240, 96, 141, 58, 253, 98, 63, 169, 43, 73, 42, 149, 215, 239, 213, 241, 201, 110, 134, 249, 213, 201, 94, 175, 54, 242, 215, 38, 177, 185, 86, 118, 73, 181, 198, 175, 145, 195, 95, 151, 120, 92, 55, 58, 56, 252, 138, 41, 145, 154, 102, 53, 208, 71, 251, 154, 242, 247, 106, 98, 213, 208, 144, 209, 171, 20, 59, 116, 109, 86, 169, 151, 43, 96, 56, 240, 93, 244, 233, 254, 86, 208, 191, 158, 199, 175, 103, 32, 164, 167, 212, 66, 234, 68, 32, 145, 4, 210, 83, 16, 82, 7, 132, 134, 39, 176, 189, 70, 98, 95, 239, 173, 137, 74, 189, 154, 43, 25, 115, 94, 236, 83, 216, 36, 125, 252, 242, 61, 11, 108, 170, 135, 4, 224, 226, 174, 42, 26, 26, 57, 202, 101, 11, 211, 189, 134, 37, 33, 151, 216, 110, 105, 12, 217, 40, 108, 176, 244, 208, 133, 237, 213, 2, 244, 114, 148, 203, 90, 75, 7, 125, 64, 160, 128, 64, 1, 182, 5, 78, 75, 243, 136, 217, 120, 225, 31, 93, 172, 24, 120, 122, 80, 58, 170, 124, 138, 192, 207, 160, 162, 200, 248, 196, 124, 98, 181, 66, 96, 134, 195, 243, 30, 66, 211, 45, 169, 136, 162, 16, 97, 214, 92, 35, 0, 35, 154, 240, 144, 161, 64, 109, 221, 98, 74, 234, 2, 53, 70, 181, 108, 10, 160, 107, 218, 111, 102, 160, 50, 131, 120, 153, 131, 222, 101, 203, 160, 181, 90, 184, 109, 25, 44, 172, 165, 29, 108, 25, 116, 85, 237, 122, 202, 14, 113, 209, 219, 57, 209, 211, 54, 5, 78, 91, 132, 186, 106, 10, 23, 209, 7, 218, 193, 81, 79, 64, 202, 149, 131, 25, 249, 221, 208, 167, 146, 112, 86, 198, 202, 15, 185, 180, 144, 205, 25, 239, 163, 105, 221, 131, 226, 10, 37, 225, 87, 81, 35, 56, 66, 147, 158, 150, 154, 163, 219, 153, 59, 26, 246, 90, 101, 27, 133, 159, 14, 141, 196, 55, 206, 95, 55, 233, 121, 185, 249, 57, 243, 78, 169, 156, 183, 228, 135, 71, 60, 198, 180, 29, 37, 64, 249, 0, 4, 47, 101, 76, 170, 205, 197, 183, 39, 112, 166, 104, 23, 243, 189, 190, 217, 2, 177, 223, 222, 65, 7, 28, 196, 150, 254, 111, 135, 1, 118, 246, 121, 195, 251, 52, 230, 227, 144, 211, 231, 253, 63, 253, 255, 235, 131, 151, 47, 221, 250, 121, 123, 234, 127, 58, 253, 137, 15, 248, 77, 34, 148, 77, 252, 237, 187, 173, 254, 66, 224, 230, 31, 2, 241, 23, 43, 231, 64, 20, 37, 112, 0, 184, 235, 215, 190, 99, 192, 137, 0, 184, 29, 62, 240, 56, 211, 251, 226, 3, 238, 214, 237, 14, 254, 221, 156, 4, 174, 249, 4, 39, 157, 3, 56, 223, 156, 46, 247, 134, 245, 111, 169, 200, 116, 48, 207, 41, 69, 227, 103, 13, 217, 3, 124, 62, 41, 31, 38, 131, 50, 210, 222, 202, 3, 204, 147, 84, 95, 186, 112, 2, 49, 217, 31, 12, 182, 70, 98, 124, 111, 201, 149, 92, 228, 122, 174, 207, 200, 88, 142, 36, 249, 77, 15, 104, 76, 110, 26, 20, 230, 62, 201, 65, 246, 64, 54, 46, 164, 209, 77, 147, 7, 131, 251, 244, 117, 74, 68, 243, 61, 8, 103, 6, 182, 105, 198, 184, 231, 70, 111, 43, 250, 73, 70, 183, 244, 48, 84, 98, 127, 112, 219, 145, 238, 238, 5, 236, 128, 102, 91, 1, 223, 168, 27, 180, 141, 30, 74, 53, 38, 182, 134, 42, 114, 92, 39, 107, 216, 3, 229, 193, 66, 181, 65, 151, 14, 38, 198, 44, 76, 82, 114, 14, 224, 103, 32, 189, 161, 57, 220, 122, 76, 13, 141, 201, 36, 204, 41, 54, 243, 148, 21, 91, 36, 148, 30, 179, 46, 246, 13, 211, 183, 71, 119, 5, 182, 251, 174, 184, 10, 217, 231, 230, 4, 249, 3, 215, 164, 245, 13, 176, 90, 36, 18, 106, 37, 233, 88, 115, 169, 134, 226, 113, 235, 219, 212, 208, 76, 23, 145, 149, 152, 57, 97, 78, 177, 153, 14, 115, 202, 74, 210, 203, 178, 38, 238, 199, 207, 72, 189, 203, 123, 146, 82, 26, 26, 131, 200, 42, 192, 111, 113, 38, 51, 149, 46, 1, 34, 229, 107, 56, 118, 116, 54, 1, 240, 55, 131, 234, 124, 175, 30, 206, 241, 60, 206, 29, 169, 161, 222, 222, 248, 40, 235, 241, 202, 229, 5, 77, 247, 143, 95, 91, 4, 200, 167, 216, 91, 210, 65, 132, 186, 236, 96, 78, 32, 207, 175, 82, 212, 23, 12, 178, 204, 90, 39, 25, 61, 197, 214, 229, 243, 252, 232, 48, 117, 114, 224, 86, 251, 121, 51, 57, 5, 233, 176, 188, 174, 134, 34, 253, 76, 201, 167, 238, 59, 198, 183, 178, 156, 124, 72, 241, 253, 182, 107, 50, 143, 94, 14, 47, 62, 227, 32, 254, 56, 207, 185, 77, 194, 198, 216, 116, 247, 10, 233, 105, 22, 3, 200, 56, 190, 39, 98, 45, 164, 134, 243, 2, 164, 70, 192, 48, 241, 216, 178, 236, 82, 40, 237, 40, 155, 148, 77, 135, 146, 178, 201, 167, 185, 88, 170, 116, 235, 138, 19, 82, 171, 59, 198, 118, 152, 147, 52, 25, 46, 115, 146, 135, 75, 47, 235, 21, 204, 100, 25, 210, 129, 72, 43, 62, 150, 148, 76, 128, 137, 138, 150, 148, 229, 183, 199, 30, 149, 127, 119, 156, 166, 107, 200, 171, 167, 172, 166, 84, 4, 140, 167, 70, 107, 198, 52, 179, 186, 2, 205, 41, 54, 211, 97, 121, 191, 106, 68, 195, 1, 24, 241, 17, 210, 44, 147, 125, 46, 196, 158, 9, 190, 146, 134, 212, 149, 186, 158, 149, 1, 97, 17, 45, 171, 56, 52, 39, 100, 102, 223, 69, 53, 120, 118, 194, 58, 150, 95, 175, 35, 110, 210, 141, 241, 24, 201, 19, 201, 65, 95, 238, 237, 74, 78, 247, 113, 159, 210, 134, 92, 14, 18, 103, 46, 182, 201, 91, 248, 37, 64, 253, 80, 211, 126, 114, 43, 87, 74, 114, 103, 158, 223, 172, 110, 0, 246, 28, 243, 67, 135, 136, 228, 113, 157, 200, 99, 176, 103, 220, 39, 115, 220, 11, 6, 230, 89, 240, 174, 160, 149, 234, 32, 10, 155, 242, 19, 102, 239, 88, 210, 192, 215, 195, 156, 2, 61, 69, 113, 50, 110, 159, 109, 17, 23, 230, 169, 57, 82, 6, 84, 242, 227, 166, 207, 217, 38, 169, 10, 221, 238, 151, 65, 172, 13, 53, 87, 119, 94, 107, 245, 162, 101, 76, 152, 195, 186, 244, 120, 200, 167, 210, 205, 132, 239, 182, 222, 18, 89, 110, 150, 143, 125, 79, 192, 167, 20, 2, 249, 130, 88, 237, 249, 4, 193, 126, 150, 172, 179, 169, 96, 81, 206, 221, 249, 163, 42, 54, 232, 137, 144, 67, 232, 84, 75, 63, 21, 207, 199, 145, 122, 217, 34, 53, 188, 227, 253, 19, 113, 65, 206, 253, 74, 205, 69, 227, 231, 56, 127, 79, 152, 67, 12, 87, 46, 148, 112, 126, 136, 195, 221, 37, 131, 187, 195, 115, 248, 152, 104, 248, 74, 233, 226, 222, 224, 126, 18, 19, 223, 35, 214, 143, 173, 192, 121, 202, 245, 35, 169, 233, 193, 25, 2, 30, 109, 10, 181, 119, 226, 208, 18, 230, 125, 47, 148, 77, 59, 60, 221, 251, 208, 89, 23, 29, 182, 52, 29, 253, 164, 191, 126, 172, 119, 227, 158, 146, 197, 78, 148, 209, 203, 7, 253, 173, 242, 66, 133, 107, 206, 152, 61, 228, 65, 28, 170, 16, 170, 208, 193, 113, 133, 229, 15, 178, 6, 207, 37, 109, 187, 206, 11, 167, 25, 115, 24, 140, 10, 255, 147, 131, 25, 173, 206, 220, 45, 203, 33, 62, 115, 126, 93, 47, 38, 163, 119, 140, 57, 86, 98, 35, 218, 182, 245, 24, 13, 205, 57, 107, 254, 250, 83, 200, 141, 231, 173, 189, 193, 111, 55, 29, 27, 191, 39, 98, 157, 246, 93, 17, 241, 111, 15, 100, 41, 80, 178, 51, 94, 207, 209, 34, 231, 158, 204, 42, 200, 39, 163, 87, 61, 197, 170, 75, 23, 148, 7, 49, 112, 55, 89, 78, 251, 168, 158, 118, 139, 125, 176, 115, 71, 224, 117, 71, 240, 168, 2, 5, 168, 165, 37, 124, 23, 247, 216, 168, 90, 16, 214, 38, 81, 55, 248, 185, 152, 74, 7, 163, 105, 7, 196, 92, 19, 152, 17, 98, 241, 179, 27, 90, 74, 82, 133, 93, 54, 141, 229, 74, 93, 171, 58, 102, 169, 62, 137, 1, 62, 119, 84, 67, 243, 70, 89, 223, 166, 71, 154, 231, 62, 251, 217, 180, 65, 32, 82, 83, 118, 232, 253, 104, 5, 247, 166, 84, 67, 117, 195, 173, 111, 211, 35, 205, 112, 39, 242, 210, 180, 0, 26, 235, 97, 239, 234, 125, 69, 69, 249, 200, 229, 96, 175, 100, 202, 36, 78, 7, 108, 205, 139, 90, 209, 224, 126, 166, 229, 132, 95, 210, 254, 188, 175, 171, 138, 132, 168, 201, 125, 36, 53, 131, 26, 76, 115, 46, 44, 1, 68, 156, 249, 186, 230, 89, 249, 204, 192, 35, 251, 171, 150, 194, 57, 60, 92, 228, 178, 165, 146, 122, 141, 140, 182, 134, 179, 120, 54, 83, 195, 52, 197, 12, 156, 94, 188, 110, 197, 137, 172, 122, 154, 197, 52, 74, 61, 238, 88, 67, 91, 38, 192, 137, 168, 59, 31, 109, 54, 220, 158, 21, 89, 138, 231, 184, 161, 174, 49, 128, 150, 189, 106, 153, 41, 99, 208, 153, 36, 17, 241, 128, 97, 145, 215, 180, 245, 122, 204, 212, 162, 141, 6, 207, 118, 106, 152, 162, 10, 204, 37, 99, 174, 10, 112, 158, 148, 215, 152, 83, 249, 133, 227, 217, 144, 102, 224, 188, 129, 14, 206, 146, 200, 71, 214, 205, 196, 249, 204, 192, 35, 103, 171, 150, 6, 158, 171, 17, 190, 72, 13, 135, 0, 169, 225, 54, 2, 164, 6, 80, 170, 182, 26, 121, 107, 38, 222, 112, 27, 214, 44, 21, 228, 248, 88, 139, 160, 72, 88, 60, 170, 9, 186, 197, 125, 159, 49, 107, 169, 184, 255, 249, 58, 173, 173, 20, 213, 64, 29, 152, 44, 124, 48, 12, 183, 97, 205, 82, 1, 99, 220, 198, 34, 40, 18, 22, 143, 226, 147, 0, 158, 1, 113, 174, 197, 217, 52, 220, 158, 149, 178, 20, 212, 251, 15, 153, 78, 141, 21, 73, 73, 53, 61, 123, 246, 87, 38, 58, 156, 51, 179, 230, 250, 8, 250, 188, 14, 101, 72, 165, 207, 151, 84, 21, 216, 103, 137, 197, 156, 120, 151, 125, 181, 131, 253, 49, 76, 28, 145, 233, 123, 115, 221, 73, 142, 230, 64, 230, 86, 141, 180, 110, 155, 187, 56, 168, 254, 187, 177, 166, 134, 122, 77, 222, 161, 65, 49, 197, 230, 159, 173, 247, 217, 201, 161, 192, 57, 13, 117, 19, 234, 134, 233, 74, 128, 111, 246, 158, 24, 183, 39, 222, 238, 201, 206, 49, 46, 30, 110, 186, 166, 217, 78, 240, 142, 110, 52, 252, 131, 81, 18, 71, 46, 24, 147, 2, 92, 238, 14, 71, 99, 201, 253, 189, 57, 154, 227, 171, 151, 39, 45, 71, 38, 231, 38, 77, 72, 113, 84, 244, 87, 165, 131, 135, 107, 104, 30, 236, 253, 97, 9, 40, 166, 204, 113, 117, 150, 50, 164, 255, 202, 130, 119, 74, 4, 239, 143, 31, 165, 184, 127, 253, 91, 54, 13, 158, 214, 194, 72, 105, 67, 85, 137, 227, 236, 234, 176, 24, 83, 234, 119, 148, 192, 129, 54, 140, 249, 133, 231, 79, 216, 69, 108, 242, 102, 57, 103, 52, 231, 19, 41, 31, 64, 235, 214, 155, 82, 140, 97, 209, 97, 46, 3, 30, 142, 161, 221, 222, 223, 31, 14, 230, 136, 172, 136, 43, 95, 87, 69, 205, 34, 67, 18, 225, 132, 35, 209, 221, 221, 233, 109, 124, 245, 242, 116, 42, 235, 184, 216, 94, 113, 202, 242, 4, 23, 6, 88, 152, 90, 118, 120, 193, 248, 118, 90, 216, 179, 25, 79, 65, 185, 193, 171, 43, 30, 183, 146, 231, 159, 33, 255, 102, 168, 99, 28, 32, 237, 51, 110, 132, 195, 181, 129, 163, 57, 54, 135, 99, 175, 218, 77, 19, 187, 70, 127, 236, 196, 71, 82, 201, 5, 62, 224, 245, 38, 181, 189, 189, 186, 190, 233, 38, 191, 101, 57, 244, 92, 79, 219, 171, 27, 142, 7, 51, 252, 227, 23, 200, 197, 197, 45, 126, 189, 147, 63, 23, 82, 202, 183, 183, 120, 99, 83, 75, 155, 149, 219, 159, 250, 0, 111, 248, 253, 126, 151, 213, 208, 94, 52, 238, 228, 243, 124, 94, 223, 92, 91, 127, 177, 231, 51, 244, 215, 190, 159, 247, 236, 245, 113, 91, 221, 94, 209, 155, 11, 220, 52, 168, 190, 24, 111, 236, 40, 222, 26, 233, 75, 249, 236, 165, 205, 176, 221, 2, 6, 24, 34, 156, 158, 140, 127, 132, 32, 97, 103, 61, 245, 227, 73, 185, 140, 49, 71, 78, 20, 21, 34, 100, 88, 18, 60, 56, 213, 31, 151, 161, 136, 88, 224, 79, 157, 99, 201, 5, 10, 163, 150, 104, 201, 90, 207, 42, 32, 225, 131, 98, 158, 226, 38, 199, 24, 83, 194, 64, 37, 219, 127, 223, 146, 241, 67, 66, 28, 92, 222, 131, 75, 116, 7, 59, 3, 191, 61, 129, 144, 4, 165, 15, 243, 203, 249, 223, 124, 248, 97, 69, 81, 60, 20, 25, 33, 8, 35, 252, 136, 88, 8, 166, 101, 46, 54, 225, 0, 37, 27, 253, 74, 128, 64, 245, 42, 60, 69, 64, 231, 64, 152, 200, 13, 22, 31, 20, 146, 210, 186, 5, 233, 61, 28, 26, 225, 223, 33, 82, 106, 170, 29, 91, 3, 50, 228, 21, 8, 160, 193, 24, 49, 39, 86, 52, 143, 123, 176, 155, 122, 191, 20, 239, 255, 96, 220, 180, 238, 146, 164, 46, 61, 93, 12, 38, 127, 199, 164, 201, 29, 33, 119, 63, 133, 52, 42, 181, 193, 189, 224, 57, 113, 38, 185, 75, 123, 0, 214, 178, 91, 241, 253, 5, 198, 166, 137, 95, 208, 52, 249, 102, 51, 30, 206, 77, 154, 119, 49, 199, 124, 180, 195, 103, 134, 87, 173, 42, 65, 176, 38, 229, 193, 24, 3, 45, 142, 176, 193, 222, 17, 252, 151, 27, 81, 99, 178, 137, 181, 168, 212, 147, 202, 234, 17, 99, 173, 195, 209, 220, 180, 11, 28, 227, 120, 70, 145, 194, 59, 143, 217, 218, 208, 113, 1, 230, 29, 0, 126, 11, 237, 79, 9, 156, 103, 51, 31, 87, 134, 81, 100, 6, 89, 111, 86, 121, 14, 32, 19, 238, 182, 121, 93, 85, 231, 47, 168, 170, 37, 73, 84, 235, 73, 186, 52, 175, 136, 181, 153, 46, 228, 60, 29, 149, 3, 10, 56, 161, 160, 176, 199, 228, 39, 200, 105, 153, 21, 11, 4, 152, 213, 229, 122, 230, 119, 175, 210, 18, 243, 124, 125, 93, 0, 188, 209, 33, 77, 119, 144, 167, 88, 11, 60, 73, 185, 129, 154, 165, 87, 82, 194, 201, 2, 31, 120, 177, 147, 106, 85, 83, 120, 75, 83, 138, 86, 223, 190, 195, 167, 24, 126, 134, 127, 90, 116, 131, 148, 109, 97, 31, 171, 250, 103, 84, 26, 103, 228, 78, 145, 59, 101, 79, 166, 232, 61, 43, 205, 150, 130, 239, 252, 23, 30, 11, 121, 107, 107, 86, 253, 227, 14, 95, 189, 191, 255, 97, 119, 6, 147, 17, 64, 214, 255, 140, 27, 225, 123, 252, 38, 190, 163, 255, 79, 34, 184, 188, 223, 147, 131, 248, 253, 161, 41, 16, 91, 96, 249, 13, 37, 8, 191, 81, 228, 66, 190, 24, 223, 12, 138, 167, 252, 121, 160, 254, 161, 11, 181, 223, 106, 194, 156, 120, 10, 234, 121, 95, 7, 147, 121, 232, 33, 157, 161, 154, 7, 186, 191, 160, 49, 106, 128, 55, 90, 231, 111, 105, 186, 25, 127, 198, 198, 129, 227, 179, 110, 206, 109, 22, 203, 30, 254, 188, 254, 179, 52, 124, 82, 173, 95, 64, 181, 132, 253, 11, 254, 215, 159, 172, 248, 79, 99, 238, 154, 207, 62, 163, 69, 250, 102, 186, 195, 221, 53, 28, 142, 8, 84, 143, 236, 242, 53, 199, 66, 236, 17, 121, 184, 33, 103, 25, 148, 24, 29, 107, 200, 77, 39, 173, 146, 27, 165, 4, 120, 72, 70, 169, 159, 226, 15, 206, 48, 220, 88, 46, 107, 58, 22, 186, 235, 20, 13, 169, 241, 203, 42, 107, 181, 110, 223, 162, 181, 2, 216, 63, 3, 216, 238, 158, 81, 246, 74, 220, 92, 18, 149, 181, 21, 187, 214, 193, 51, 71, 165, 87, 33, 217, 81, 232, 74, 235, 37, 53, 96, 232, 134, 201, 27, 134, 92, 226, 142, 168, 77, 24, 41, 49, 5, 31, 35, 66, 178, 139, 120, 187, 113, 55, 71, 231, 68, 235, 9, 98, 228, 29, 19, 27, 84, 20, 146, 100, 0, 100, 69, 138, 137, 7, 82, 253, 19, 121, 239, 112, 112, 242, 20, 97, 240, 168, 101, 174, 39, 25, 53, 137, 203, 146, 112, 87, 210, 83, 15, 221, 51, 0, 146, 82, 143, 122, 65, 101, 83, 59, 201, 92, 32, 95, 6, 78, 70, 89, 12, 17, 4, 114, 9, 116, 147, 101, 18, 61, 161, 12, 243, 139, 247, 10, 109, 105, 159, 37, 145, 66, 74, 228, 40, 23, 99, 207, 223, 254, 28, 35, 33, 125, 210, 178, 203, 192, 177, 249, 194, 121, 20, 154, 231, 164, 90, 75, 32, 16, 94, 13, 235, 80, 151, 81, 17, 30, 47, 36, 130, 84, 175, 15, 56, 201, 85, 186, 74, 42, 5, 150, 212, 179, 117, 140, 136, 118, 69, 16, 80, 143, 2, 137, 150, 86, 139, 3, 141, 108, 81, 213, 178, 128, 112, 65, 196, 123, 43, 180, 249, 196, 10, 244, 73, 9, 170, 127, 227, 13, 248, 61, 86, 236, 201, 181, 36, 233, 26, 48, 170, 134, 0, 179, 69, 25, 186, 64, 12, 173, 8, 222, 142, 97, 44, 173, 75, 62, 128, 195, 190, 21, 254, 25, 65, 169, 169, 29, 161, 195, 74, 220, 81, 144, 36, 235, 134, 181, 46, 232, 145, 88, 20, 234, 71, 234, 104, 72, 234, 104, 202, 70, 110, 165, 25, 37, 191, 129, 206, 129, 125, 228, 251, 161, 108, 143, 62, 37, 21, 37, 101, 15, 56, 248, 155, 245, 15, 137, 103, 170, 164, 204, 122, 170, 107, 7, 21, 120, 111, 187, 243, 52, 6, 43, 192, 62, 1, 200, 75, 97, 101, 118, 35, 215, 199, 78, 103, 221, 71, 68, 189, 195, 61, 9, 247, 150, 217, 8, 244, 221, 86, 46, 208, 251, 238, 25, 79, 209, 244, 68, 192, 32, 108, 15, 42, 16, 36, 79, 22, 112, 164, 200, 97, 21, 69, 47, 73, 139, 174, 215, 67, 209, 164, 8, 1, 103, 107, 4, 74, 245, 89, 182, 29, 157, 158, 142, 137, 1, 10, 35, 27, 213, 98, 4, 76, 52, 106, 27, 47, 55, 28, 122, 66, 96, 159, 139, 238, 107, 214, 15, 165, 148, 220, 155, 129, 141, 11, 205, 26, 204, 143, 181, 68, 140, 86, 100, 108, 79, 206, 196, 27, 7, 19, 176, 168, 158, 152, 105, 9, 31, 98, 10, 37, 59, 159, 129, 200, 77, 223, 39, 24, 36, 9, 10, 171, 72, 94, 9, 74, 209, 64, 80, 73, 212, 28, 98, 203, 89, 185, 52, 56, 112, 172, 156, 162, 178, 8, 231, 148, 30, 23, 16, 67, 138, 96, 14, 12, 1, 16, 65, 26, 237, 143, 64, 193, 35, 194, 93, 81, 28, 109, 216, 113, 163, 243, 109, 78, 16, 136, 208, 57, 67, 64, 249, 137, 47, 3, 148, 24, 169, 128, 177, 24, 0, 21, 226, 152, 0, 175, 179, 189, 143, 210, 192, 131, 126, 79, 204, 49, 58, 120, 67, 35, 236, 19, 253, 33, 96, 138, 242, 25, 184, 116, 199, 51, 200, 204, 179, 36, 201, 195, 212, 111, 178, 108, 233, 113, 127, 145, 176, 157, 92, 254, 4, 41, 101, 7, 62, 234, 51, 81, 179, 225, 12, 11, 127, 72, 196, 230, 222, 223, 169, 61, 47, 117, 209, 24, 44, 207, 88, 166, 68, 79, 203, 204, 112, 200, 144, 86, 168, 31, 1, 205, 251, 71, 184, 40, 24, 104, 72, 146, 163, 232, 88, 122, 137, 20, 6, 198, 192, 139, 165, 168, 6, 253, 128, 135, 54, 189, 24, 86, 171, 163, 192, 156, 235, 61, 86, 244, 180, 20, 6, 120, 134, 182, 242, 174, 19, 93, 166, 155, 29, 104, 213, 230, 77, 81, 16, 197, 9, 23, 67, 83, 156, 201, 102, 104, 18, 141, 77, 3, 220, 175, 103, 97, 119, 169, 174, 216, 193, 76, 6, 39, 231, 146, 97, 89, 215, 105, 226, 8, 72, 104, 23, 208, 31, 232, 113, 92, 16, 92, 200, 89, 90, 43, 120, 223, 186, 97, 121, 168, 95, 97, 77, 142, 242, 229, 117, 178, 253, 43, 118, 191, 149, 211, 157, 187, 105, 129, 205, 237, 180, 229, 255, 238, 183, 202, 178, 255, 248, 9, 89, 182, 237, 135, 79, 148, 250, 167, 71, 148, 218, 246, 251, 191, 126, 251, 15, 123, 125, 157, 124, 238, 90, 133, 195, 231, 132, 94, 61, 179, 42, 9, 35, 252, 108, 64, 90, 157, 3, 112, 8, 180, 98, 22, 33, 238, 130, 202, 103, 199, 30, 57, 93, 0, 198, 53, 74, 240, 95, 10, 23, 126, 94, 135, 210, 28, 24, 16, 39, 93, 78, 233, 33, 77, 254, 148, 223, 228, 183, 249, 189, 254, 82, 255, 159, 254, 69, 135, 186, 134, 43, 60, 60, 28, 222, 239, 63, 254, 180, 60, 31, 91, 151, 231, 133, 72, 245, 174, 13, 167, 133, 158, 244, 65, 127, 33, 190, 18, 223, 245, 103, 253, 141, 248, 43, 70, 21, 245, 76, 129, 124, 4, 250, 128, 129, 253, 29, 47, 91, 60, 204, 40, 65, 47, 53, 155, 69, 98, 209, 40, 93, 85, 65, 153, 163, 75, 224, 154, 87, 156, 253, 117, 68, 250, 245, 167, 17, 32, 130, 6, 10, 210, 187, 49, 27, 122, 7, 128, 48, 140, 141, 241, 136, 219, 77, 93, 230, 83, 161, 78, 188, 237, 146, 25, 246, 40, 26, 237, 52, 55, 120, 124, 135, 254, 68, 196, 194, 52, 91, 204, 122, 136, 176, 120, 4, 122, 55, 238, 68, 161, 128, 36, 7, 144, 82, 233, 4, 41, 108, 49, 119, 143, 228, 26, 149, 218, 33, 134, 78, 109, 90, 134, 183, 151, 158, 77, 106, 230, 21, 22, 80, 235, 242, 72, 165, 51, 165, 71, 232, 81, 77, 182, 98, 6, 37, 246, 38, 27, 143, 1, 187, 174, 205, 213, 65, 173, 230, 174, 143, 106, 10, 210, 218, 20, 157, 86, 75, 16, 37, 230, 2, 129, 193, 123, 83, 133, 126, 46, 46, 14, 83, 168, 95, 127, 101, 208, 225, 225, 238, 225, 62, 35, 189, 227, 188, 28, 142, 6, 248, 20, 232, 122, 149, 247, 88, 215, 237, 19, 181, 198, 236, 117, 103, 8, 216, 6, 39, 166, 228, 60, 148, 136, 19, 141, 161, 84, 31, 202, 74, 213, 134, 243, 9, 149, 242, 144, 16, 0, 183, 202, 207, 114, 246, 183, 228, 164, 44, 98, 76, 93, 100, 75, 22, 124, 194, 134, 80, 176, 178, 106, 89, 100, 56, 79, 51, 144, 247, 104, 34, 119, 24, 131, 173, 81, 126, 169, 198, 155, 192, 186, 31, 79, 76, 120, 200, 207, 165, 100, 1, 209, 89, 154, 105, 61, 14, 185, 96, 171, 187, 129, 77, 35, 148, 59, 204, 86, 209, 83, 28, 10, 222, 199, 99, 109, 94, 108, 74, 186, 89, 202, 226, 48, 38, 64, 241, 154, 60, 127, 127, 25, 37, 198, 22, 210, 122, 8, 110, 157, 211, 96, 8, 192, 214, 120, 243, 180, 246, 25, 180, 60, 61, 34, 163, 0, 232, 211, 47, 180, 226, 200, 24, 180, 14, 189, 90, 21, 122, 93, 65, 63, 91, 85, 209, 216, 164, 210, 213, 15, 73, 51, 224, 184, 48, 73, 210, 232, 247, 248, 142, 126, 73, 255, 68, 255, 149, 138, 40, 238, 219, 34, 47, 40, 10, 31, 116, 201, 108, 118, 110, 210, 238, 217, 5, 139, 179, 19, 128, 120, 128, 10, 244, 222, 210, 72, 87, 22, 10, 192, 71, 92, 78, 178, 239, 85, 247, 173, 251, 221, 221, 218, 221, 167, 119, 111, 220, 31, 93, 231, 40, 14, 23, 129, 150, 194, 125, 197, 185, 194, 93, 168, 56, 77, 166, 248, 247, 192, 104, 147, 8, 154, 248, 105, 162, 163, 143, 207, 31, 248, 3, 255, 102, 82, 15, 163, 2, 140, 238, 38, 160, 155, 15, 226, 207, 90, 53, 161, 74, 147, 232, 136, 38, 13, 80, 152, 45, 171, 110, 234, 80, 235, 166, 74, 146, 147, 45, 99, 161, 15, 116, 92, 176, 196, 29, 222, 1, 73, 79, 146, 142, 9, 31, 42, 247, 142, 226, 23, 149, 212, 172, 240, 254, 227, 32, 111, 133, 250, 167, 171, 50, 246, 147, 144, 55, 23, 114, 151, 21, 105, 167, 92, 34, 186, 139, 13, 159, 198, 162, 105, 155, 47, 200, 212, 129, 20, 116, 104, 45, 128, 252, 8, 210, 89, 89, 245, 83, 182, 129, 209, 116, 221, 96, 177, 59, 25, 225, 147, 40, 86, 213, 0, 224, 196, 114, 237, 46, 118, 249, 229, 222, 0, 81, 38, 97, 225, 193, 111, 85, 250, 144, 126, 147, 168, 252, 202, 35, 127, 144, 214, 109, 78, 233, 33, 237, 88, 164, 92, 198, 5, 52, 124, 218, 68, 110, 157, 253, 18, 192, 54, 79, 46, 17, 52, 59, 233, 243, 170, 213, 95, 164, 170, 101, 92, 185, 164, 17, 200, 51, 209, 142, 137, 49, 251, 85, 92, 96, 34, 194, 108, 129, 152, 152, 227, 144, 253, 192, 216, 49, 190, 242, 181, 122, 249, 58, 238, 250, 23, 96, 216, 93, 251, 41, 2, 73, 218, 181, 253, 156, 253, 249, 159, 97, 251, 105, 125, 119, 197, 199, 44, 107, 63, 200, 200, 121, 243, 57, 163, 109, 168, 139, 12, 56, 125, 99, 77, 229, 224, 48, 160, 109, 20, 174, 2, 46, 236, 99, 37, 53, 170, 203, 116, 17, 133, 90, 226, 196, 62, 251, 20, 96, 104, 102, 228, 180, 123, 174, 242, 131, 252, 62, 99, 206, 47, 199, 158, 94, 175, 73, 56, 120, 228, 11, 152, 79, 251, 87, 144, 167, 57, 246, 105, 58, 69, 92, 175, 230, 162, 152, 23, 4, 128, 59, 77, 184, 206, 244, 137, 248, 255, 26, 62, 250, 23, 238, 50, 172, 215, 144, 199, 242, 78, 152, 204, 184, 120, 174, 45, 75, 64, 184, 28, 63, 200, 37, 30, 23, 4, 200, 151, 217, 146, 153, 126, 115, 160, 132, 125, 251, 33, 31, 252, 25, 103, 79, 69, 58, 236, 12, 93, 155, 23, 227, 46, 8, 89, 167, 48, 242, 79, 63, 81, 0, 163, 84, 211, 100, 18, 99, 186, 172, 161, 191, 192, 213, 93, 71, 175, 86, 173, 99, 53, 165, 63, 0, 224, 221, 11, 18, 177, 227, 232, 116, 188, 4, 215, 187, 86, 139, 128, 20, 235, 78, 35, 45, 36, 243, 194, 185, 81, 66, 146, 73, 203, 18, 218, 165, 37, 245, 196, 239, 201, 88, 102, 191, 42, 211, 184, 241, 73, 146, 167, 64, 155, 40, 170, 135, 196, 123, 178, 4, 77, 221, 146, 181, 251, 83, 137, 160, 57, 248, 52, 143, 200, 223, 110, 208, 185, 169, 38, 251, 182, 117, 45, 186, 121, 170, 196, 83, 243, 66, 123, 51, 129, 97, 233, 167, 46, 112, 246, 130, 156, 73, 152, 192, 251, 16, 178, 174, 53, 69, 229, 119, 74, 172, 161, 175, 146, 143, 170, 117, 145, 139, 233, 8, 180, 223, 71, 96, 1, 73, 52, 105, 194, 66, 168, 82, 233, 147, 10, 46, 38, 131, 213, 93, 27, 243, 143, 18, 217, 35, 32, 92, 196, 33, 88, 74, 70, 0, 201, 52, 91, 169, 62, 92, 170, 215, 165, 170, 186, 99, 5, 23, 143, 139, 60, 82, 158, 113, 177, 17, 6, 163, 26, 62, 82, 113, 110, 176, 102, 35, 18, 171, 42, 99, 41, 129, 79, 85, 64, 29, 19, 90, 197, 16, 229, 14, 113, 37, 106, 33, 216, 1, 169, 139, 230, 107, 11, 136, 89, 70, 159, 127, 19, 227, 207, 162, 191, 165, 100, 106, 224, 225, 205, 155, 223, 56, 157, 236, 250, 173, 35, 154, 125, 232, 167, 114, 88, 65, 159, 58, 215, 175, 240, 114, 79, 99, 132, 94, 247, 73, 65, 199, 94, 111, 183, 211, 207, 216, 50, 69, 121, 87, 142, 45, 151, 37, 250, 53, 126, 235, 90, 182, 131, 235, 55, 73, 113, 176, 54, 93, 191, 163, 228, 109, 236, 238, 116, 81, 242, 6, 235, 48, 243, 35, 238, 156, 49, 121, 85, 49, 0, 139, 0, 230, 110, 153, 175, 243, 242, 38, 207, 209, 119, 220, 36, 173, 19, 100, 8, 199, 157, 245, 68, 28, 177, 146, 42, 109, 112, 244, 42, 88, 170, 35, 13, 192, 18, 253, 22, 160, 167, 73, 162, 215, 221, 29, 121, 202, 82, 114, 102, 167, 162, 132, 145, 133, 64, 129, 253, 66, 187, 214, 243, 212, 223, 216, 52, 101, 179, 105, 115, 10, 228, 77, 164, 68, 43, 30, 201, 141, 63, 109, 221, 246, 220, 156, 20, 55, 193, 101, 151, 217, 190, 51, 158, 22, 132, 68, 205, 109, 216, 205, 5, 190, 218, 18, 128, 195, 225, 61, 251, 87, 147, 85, 136, 227, 68, 235, 161, 134, 33, 7, 9, 177, 201, 219, 77, 28, 195, 68, 231, 86, 217, 140, 49, 149, 242, 68, 28, 108, 135, 14, 158, 59, 47, 56, 0, 169, 160, 163, 173, 167, 201, 224, 216, 25, 193, 47, 186, 203, 106, 251, 156, 10, 3, 165, 49, 26, 206, 93, 16, 190, 52, 136, 46, 146, 76, 102, 94, 11, 223, 148, 229, 214, 69, 126, 64, 128, 131, 65, 66, 60, 79, 225, 242, 179, 5, 254, 208, 86, 55, 183, 80, 45, 211, 45, 123, 243, 186, 221, 154, 87, 183, 254, 213, 254, 145, 87, 96, 226, 25, 227, 59, 210, 154, 211, 105, 55, 255, 165, 161, 73, 241, 136, 14, 56, 154, 247, 31, 6, 62, 108, 95, 207, 252, 116, 61, 171, 64, 111, 95, 135, 112, 251, 198, 95, 0, 196, 181, 187, 101, 247, 159, 169, 121, 83, 210, 239, 126, 2, 165, 209, 229, 117, 248, 156, 215, 175, 43, 52, 175, 206, 148, 233, 43, 83, 234, 177, 121, 98, 115, 121, 102, 220, 4, 192, 47, 255, 93, 144, 160, 83, 143, 190, 13, 115, 143, 162, 160, 190, 226, 86, 220, 6, 247, 245, 180, 253, 109, 236, 183, 88, 138, 244, 36, 210, 120, 0, 2, 135, 250, 87, 222, 201, 97, 128, 21, 7, 223, 93, 195, 46, 247, 161, 53, 149, 102, 81, 169, 165, 247, 79, 241, 225, 9, 33, 104, 87, 19, 124, 251, 4, 173, 131, 63, 12, 129, 207, 38, 207, 160, 211, 46, 92, 136, 67, 190, 41, 41, 174, 130, 163, 174, 182, 111, 170, 57, 185, 65, 231, 20, 136, 59, 93, 12, 105, 121, 112, 165, 227, 166, 221, 44, 95, 181, 11, 16, 130, 221, 178, 220, 131, 149, 211, 214, 211, 212, 59, 80, 27, 212, 209, 147, 26, 124, 179, 142, 164, 195, 163, 83, 227, 252, 184, 114, 1, 215, 46, 45, 137, 102, 252, 23, 15, 50, 149, 184, 49, 114, 74, 39, 46, 135, 239, 168, 106, 93, 243, 245, 74, 122, 129, 19, 232, 30, 195, 35, 168, 197, 226, 17, 129, 246, 9, 154, 76, 87, 221, 238, 220, 2, 133, 19, 144, 92, 213, 66, 179, 238, 34, 123, 129, 43, 197, 137, 237, 59, 43, 57, 70, 223, 207, 157, 255, 199, 233, 78, 232, 118, 73, 203, 185, 12, 59, 196, 186, 6, 122, 185, 23, 29, 240, 173, 82, 245, 7, 78, 169, 7, 117, 80, 56, 163, 106, 126, 130, 198, 243, 245, 35, 187, 14, 110, 233, 236, 163, 193, 201, 227, 139, 63, 201, 239, 156, 55, 46, 64, 220, 129, 215, 219, 198, 137, 176, 174, 100, 64, 153, 205, 128, 103, 139, 97, 246, 23, 74, 95, 210, 243, 119, 108, 252, 187, 129, 206, 231, 251, 166, 159, 162, 4, 210, 181, 238, 180, 1, 83, 35, 19, 46, 61, 98, 22, 204, 177, 37, 62, 52, 24, 10, 153, 62, 1, 45, 165, 213, 93, 250, 44, 70, 97, 43, 20, 227, 169, 137, 177, 85, 98, 26, 167, 185, 167, 41, 55, 4, 234, 84, 55, 148, 189, 184, 192, 243, 76, 151, 83, 147, 15, 181, 44, 243, 15, 76, 89, 158, 212, 192, 30, 169, 129, 252, 242, 244, 233, 233, 141, 255, 207, 255, 239, 79, 112, 210, 195, 114, 192, 97, 200, 21, 195, 161, 4, 209, 242, 252, 220, 174, 135, 238, 175, 73, 190, 108, 117, 59, 202, 134, 138, 42, 79, 218, 193, 159, 18, 169, 135, 117, 168, 107, 184, 84, 177, 181, 182, 73, 167, 128, 81, 116, 9, 122, 232, 157, 153, 216, 155, 180, 234, 73, 129, 13, 99, 19, 91, 137, 114, 18, 167, 213, 102, 94, 233, 98, 191, 65, 177, 237, 94, 24, 167, 34, 165, 41, 1, 144, 21, 110, 21, 89, 35, 187, 15, 43, 251, 249, 156, 36, 10, 1, 132, 32, 241, 234, 100, 26, 181, 119, 31, 175, 66, 125, 17, 85, 112, 159, 29, 18, 156, 31, 195, 223, 97, 160, 192, 216, 212, 209, 19, 253, 34, 191, 202, 155, 115, 85, 137, 32, 43, 120, 183, 121, 133, 208, 214, 178, 16, 23, 121, 226, 81, 27, 66, 151, 133, 208, 168, 5, 111, 72, 163, 182, 199, 161, 207, 157, 10, 26, 213, 0, 17, 56, 58, 51, 85, 192, 35, 81, 218, 47, 33, 181, 23, 186, 199, 105, 116, 58, 26, 165, 125, 44, 30, 69, 237, 54, 98, 123, 62, 79, 129, 153, 211, 219, 140, 216, 44, 12, 198, 250, 53, 228, 4, 190, 20, 140, 21, 108, 74, 104, 179, 91, 52, 28, 252, 180, 160, 243, 82, 89, 47, 150, 142, 41, 85, 221, 86, 32, 36, 32, 225, 172, 19, 135, 189, 90, 141, 182, 25, 153, 0, 66, 56, 187, 132, 47, 203, 228, 205, 109, 93, 111, 94, 184, 49, 77, 231, 110, 67, 239, 94, 149, 9, 199, 239, 234, 51, 242, 118, 184, 77, 52, 222, 222, 210, 188, 125, 125, 70, 229, 241, 139, 71, 114, 13, 241, 9, 160, 252, 244, 8, 13, 250, 164, 71, 69, 98, 166, 96, 102, 150, 98, 82, 76, 243, 137, 41, 118, 197, 133, 34, 240, 194, 174, 31, 236, 85, 62, 47, 184, 226, 66, 202, 237, 41, 145, 12, 0, 129, 101, 141, 85, 38, 173, 190, 125, 34, 41, 7, 28, 69, 26, 244, 38, 3, 7, 74, 67, 243, 160, 181, 253, 100, 83, 153, 88, 211, 190, 207, 147, 152, 218, 214, 242, 105, 180, 245, 201, 107, 10, 153, 211, 15, 164, 244, 75, 21, 107, 73, 225, 177, 182, 11, 229, 252, 202, 89, 249, 192, 66, 148, 77, 36, 207, 186, 118, 136, 183, 38, 31, 107, 126, 130, 201, 191, 152, 228, 232, 222, 228, 2, 46, 85, 143, 48, 238, 50, 59, 43, 7, 252, 15, 38, 42, 61, 51, 115, 223, 16, 119, 34, 31, 37, 138, 81, 166, 212, 105, 145, 19, 49, 215, 194, 107, 6, 31, 73, 10, 121, 81, 92, 193, 165, 220, 201, 113, 204, 48, 196, 121, 96, 243, 82, 44, 186, 197, 25, 217, 117, 26, 116, 120, 68, 167, 125, 128, 48, 179, 179, 30, 233, 69, 130, 71, 24, 53, 0, 137, 15, 105, 170, 99, 179, 40, 94, 30, 154, 211, 204, 157, 237, 170, 122, 251, 150, 90, 36, 244, 109, 228, 207, 226, 77, 188, 129, 170, 87, 73, 253, 227, 175, 123, 154, 106, 169, 207, 243, 42, 180, 19, 25, 126, 211, 234, 83, 176, 44, 114, 184, 126, 79, 242, 5, 149, 40, 15, 150, 229, 85, 78, 222, 99, 205, 154, 203, 63, 198, 209, 200, 137, 28, 128, 144, 196, 229, 194, 140, 86, 110, 39, 138, 191, 153, 74, 212, 155, 229, 68, 66, 56, 194, 32, 56, 83, 97, 182, 50, 168, 145, 41, 2, 97, 94, 216, 38, 60, 21, 246, 11, 12, 2, 21, 170, 73, 167, 228, 111, 128, 22, 145, 240, 11, 247, 177, 117, 203, 230, 139, 27, 183, 115, 140, 4, 151, 233, 88, 96, 243, 44, 64, 171, 237, 104, 60, 223, 26, 51, 74, 0, 133, 170, 200, 28, 100, 216, 231, 141, 149, 169, 22, 103, 159, 5, 224, 114, 215, 125, 148, 71, 56, 25, 149, 209, 84, 208, 20, 53, 81, 171, 1, 62, 51, 155, 23, 143, 12, 196, 114, 92, 34, 12, 228, 49, 95, 79, 85, 20, 146, 41, 83, 87, 197, 239, 71, 194, 159, 67, 57, 185, 63, 106, 124, 129, 63, 232, 158, 238, 92, 247, 177, 66, 83, 194, 224, 28, 246, 81, 253, 125, 145, 102, 15, 226, 32, 208, 150, 18, 182, 243, 97, 48, 22, 247, 69, 148, 21, 68, 142, 149, 134, 73, 190, 78, 162, 21, 46, 22, 16, 146, 30, 156, 109, 93, 154, 205, 89, 12, 26, 88, 130, 4, 233, 247, 251, 119, 243, 148, 251, 135, 0, 151, 238, 199, 43, 11, 63, 96, 120, 191, 66, 83, 96, 171, 188, 184, 146, 126, 182, 243, 34, 143, 72, 35, 140, 113, 138, 169, 199, 72, 39, 160, 88, 25, 186, 245, 58, 167, 22, 143, 116, 53, 55, 165, 17, 33, 45, 69, 184, 24, 26, 206, 14, 14, 199, 31, 75, 204, 247, 222, 200, 140, 255, 198, 57, 152, 202, 204, 140, 111, 248, 214, 60, 84, 188, 183, 243, 93, 191, 0, 165, 101, 189, 230, 247, 148, 224, 149, 245, 190, 73, 174, 83, 138, 234, 121, 128, 95, 46, 29, 78, 134, 212, 24, 168, 206, 137, 99, 248, 85, 194, 196, 139, 217, 95, 96, 88, 2, 193, 102, 230, 99, 95, 66, 75, 57, 88, 96, 1, 74, 192, 90, 240, 100, 30, 109, 178, 167, 19, 215, 120, 60, 211, 228, 40, 36, 46, 249, 177, 27, 34, 179, 106, 157, 98, 76, 188, 147, 185, 173, 168, 85, 33, 90, 179, 209, 2, 202, 224, 168, 31, 155, 193, 168, 211, 204, 18, 17, 40, 2, 144, 183, 34, 173, 58, 51, 96, 210, 146, 218, 48, 205, 248, 44, 124, 111, 130, 251, 56, 98, 199, 80, 199, 107, 186, 90, 9, 122, 186, 80, 162, 157, 240, 246, 38, 219, 184, 205, 91, 162, 3, 167, 93, 162, 17, 190, 201, 175, 223, 50, 231, 95, 246, 215, 157, 204, 185, 203, 197, 74, 197, 172, 4, 144, 107, 9, 21, 180, 127, 245, 254, 15, 62, 113, 238, 16, 227, 218, 49, 126, 215, 51, 94, 178, 207, 71, 92, 12, 222, 100, 230, 25, 154, 5, 127, 231, 164, 41, 137, 237, 109, 92, 136, 10, 239, 39, 149, 133, 46, 231, 247, 14, 75, 31, 202, 220, 116, 124, 94, 106, 120, 198, 174, 105, 232, 139, 34, 216, 77, 43, 154, 20, 113, 148, 191, 241, 149, 83, 61, 159, 25, 169, 239, 238, 222, 24, 241, 150, 202, 44, 192, 148, 118, 52, 231, 31, 166, 91, 53, 109, 123, 25, 16, 239, 133, 106, 247, 43, 188, 189, 9, 87, 210, 54, 10, 70, 153, 187, 91, 122, 65, 182, 238, 164, 246, 104, 174, 209, 202, 22, 177, 64, 247, 172, 177, 203, 130, 252, 83, 194, 135, 118, 102, 23, 59, 54, 78, 211, 248, 200, 165, 171, 128, 118, 132, 39, 35, 144, 246, 106, 196, 5, 156, 74, 225, 131, 169, 211, 2, 83, 103, 128, 173, 115, 134, 210, 209, 231, 20, 23, 197, 26, 6, 237, 225, 28, 178, 103, 84, 46, 160, 151, 31, 254, 12, 163, 74, 206, 126, 211, 39, 217, 218, 211, 235, 43, 11, 243, 220, 48, 150, 175, 24, 236, 47, 30, 105, 54, 184, 234, 220, 227, 85, 181, 220, 207, 168, 91, 122, 166, 32, 182, 225, 59, 190, 221, 56, 178, 94, 39, 103, 114, 61, 172, 19, 141, 214, 43, 95, 54, 205, 248, 68, 163, 101, 122, 37, 189, 164, 124, 96, 226, 208, 99, 19, 19, 36, 239, 225, 88, 66, 89, 34, 93, 175, 166, 60, 95, 113, 21, 77, 237, 235, 39, 60, 116, 97, 153, 216, 238, 75, 183, 35, 112, 128, 55, 245, 152, 44, 255, 33, 41, 142, 74, 193, 166, 117, 213, 222, 78, 191, 145, 158, 8, 1, 133, 205, 103, 4, 161, 12, 90, 13, 211, 208, 100, 18, 231, 80, 138, 111, 21, 78, 98, 100, 102, 166, 141, 126, 151, 110, 220, 43, 114, 94, 1, 104, 91, 71, 186, 89, 143, 211, 148, 195, 154, 179, 143, 114, 178, 183, 39, 121, 40, 28, 88, 218, 254, 1, 90, 41, 61, 66, 202, 228, 210, 209, 184, 104, 1, 44, 83, 166, 244, 235, 158, 242, 180, 135, 237, 110, 119, 121, 185, 118, 124, 0, 240, 185, 237, 215, 252, 240, 98, 121, 115, 83, 238, 104, 27, 66, 123, 38, 132, 114, 183, 210, 66, 150, 124, 85, 158, 80, 210, 173, 204, 206, 44, 109, 47, 103, 39, 200, 234, 66, 186, 92, 71, 205, 98, 144, 222, 229, 85, 175, 158, 104, 197, 225, 42, 145, 17, 190, 204, 101, 173, 44, 236, 192, 115, 97, 49, 194, 121, 225, 35, 199, 26, 143, 149, 1, 44, 91, 49, 218, 0, 152, 206, 157, 215, 250, 148, 125, 174, 127, 50, 165, 40, 204, 169, 107, 112, 26, 169, 214, 33, 95, 133, 158, 22, 4, 205, 214, 156, 84, 60, 121, 63, 72, 169, 11, 84, 10, 154, 232, 216, 201, 40, 226, 19, 66, 241, 196, 34, 229, 64, 45, 196, 142, 91, 152, 20, 169, 76, 140, 206, 22, 202, 86, 156, 78, 165, 2, 53, 157, 193, 93, 105, 93, 105, 45, 29, 199, 25, 99, 80, 180, 129, 45, 136, 144, 239, 120, 40, 215, 205, 124, 146, 77, 147, 66, 60, 184, 156, 2, 207, 184, 94, 113, 13, 189, 30, 206, 104, 61, 73, 146, 175, 34, 9, 224, 63, 78, 200, 53, 104, 189, 51, 3, 237, 128, 27, 202, 108, 241, 45, 175, 206, 60, 213, 122, 198, 85, 136, 179, 103, 77, 70, 119, 92, 237, 122, 24, 8, 19, 146, 145, 159, 220, 244, 96, 38, 118, 145, 227, 157, 201, 240, 248, 123, 45, 72, 91, 82, 213, 166, 33, 112, 220, 92, 174, 102, 28, 250, 14, 210, 69, 169, 35, 105, 117, 251, 68, 169, 155, 228, 214, 105, 15, 233, 189, 190, 38, 69, 215, 247, 113, 220, 24, 163, 83, 238, 35, 81, 31, 241, 98, 183, 225, 90, 67, 199, 213, 82, 66, 185, 154, 79, 74, 224, 14, 32, 7, 59, 186, 120, 79, 153, 71, 28, 47, 122, 49, 11, 191, 49, 226, 36, 78, 214, 3, 227, 152, 109, 205, 122, 193, 57, 149, 54, 213, 61, 155, 198, 80, 62, 11, 193, 42, 235, 141, 5, 191, 165, 157, 217, 28, 110, 10, 67, 42, 100, 245, 229, 114, 167, 8, 185, 159, 168, 156, 34, 29, 122, 228, 147, 126, 188, 174, 30, 80, 79, 66, 53, 194, 138, 165, 55, 107, 64, 51, 65, 236, 123, 202, 253, 18, 109, 241, 237, 38, 174, 157, 23, 113, 234, 105, 239, 32, 14, 123, 174, 186, 60, 202, 9, 109, 152, 157, 49, 24, 107, 34, 0, 225, 151, 22, 45, 84, 3, 112, 160, 251, 65, 245, 207, 168, 34, 249, 155, 162, 224, 98, 20, 6, 117, 142, 103, 229, 52, 131, 186, 221, 248, 3, 165, 141, 156, 221, 8, 92, 197, 189, 170, 229, 153, 250, 186, 98, 55, 85, 21, 65, 71, 41, 162, 221, 228, 58, 217, 112, 199, 19, 101, 169, 169, 198, 222, 239, 100, 11, 8, 130, 94, 25, 88, 114, 244, 68, 47, 44, 139, 24, 179, 135, 107, 196, 81, 36, 194, 177, 242, 205, 77, 201, 224, 105, 173, 51, 71, 55, 12, 144, 180, 35, 208, 138, 32, 25, 58, 149, 138, 108, 240, 138, 39, 34, 11, 178, 15, 69, 214, 90, 148, 47, 180, 226, 210, 237, 39, 40, 160, 4, 10, 89, 134, 220, 136, 71, 230, 148, 158, 111, 130, 23, 160, 66, 85, 131, 195, 20, 187, 33, 89, 172, 19, 115, 86, 72, 242, 77, 0, 166, 148, 34, 213, 52, 225, 3, 161, 123, 178, 158, 124, 98, 29, 196, 90, 215, 228, 193, 166, 192, 154, 183, 153, 95, 236, 48, 196, 24, 222, 18, 99, 190, 94, 47, 180, 190, 166, 121, 231, 93, 200, 29, 133, 123, 218, 86, 153, 198, 104, 77, 16, 193, 96, 152, 138, 245, 20, 40, 118, 43, 212, 205, 72, 134, 30, 11, 92, 203, 201, 157, 7, 122, 162, 18, 241, 100, 240, 107, 229, 228, 52, 70, 14, 130, 85, 99, 231, 102, 207, 243, 248, 54, 1, 234, 32, 58, 58, 75, 44, 172, 242, 64, 76, 179, 26, 203, 167, 93, 79, 210, 9, 160, 42, 132, 82, 103, 214, 196, 210, 90, 22, 42, 148, 232, 19, 153, 82, 25, 123, 223, 66, 73, 219, 88, 13, 152, 182, 64, 198, 2, 236, 2, 153, 176, 129, 158, 33, 4, 162, 25, 108, 27, 18, 54, 85, 130, 6, 216, 139, 225, 16, 136, 95, 234, 226, 99, 102, 3, 114, 68, 73, 20, 44, 8, 139, 85, 232, 117, 196, 77, 155, 58, 94, 74, 33, 161, 234, 161, 100, 99, 111, 133, 39, 93, 37, 145, 244, 133, 66, 182, 124, 35, 90, 16, 91, 0, 201, 188, 38, 75, 12, 126, 242, 115, 196, 133, 96, 245, 251, 228, 164, 52, 96, 115, 5, 125, 80, 236, 107, 5, 154, 210, 35, 93, 11, 182, 141, 206, 240, 27, 77, 121, 99, 184, 90, 90, 12, 91, 110, 229, 126, 167, 136, 181, 12, 107, 157, 186, 145, 73, 205, 104, 162, 197, 99, 93, 103, 24, 202, 74, 251, 46, 120, 65, 168, 23, 76, 64, 71, 25, 77, 231, 72, 11, 109, 165, 120, 217, 130, 43, 121, 14, 193, 192, 60, 62, 163, 104, 122, 35, 165, 69, 178, 161, 7, 89, 122, 53, 110, 190, 35, 92, 119, 222, 14, 179, 131, 206, 124, 81, 68, 130, 137, 17, 7, 78, 34, 239, 2, 194, 2, 111, 213, 117, 86, 184, 145, 85, 14, 159, 108, 200, 166, 198, 168, 179, 197, 114, 9, 168, 253, 165, 54, 235, 194, 43, 117, 122, 74, 92, 57, 195, 181, 121, 76, 161, 192, 199, 148, 172, 63, 211, 53, 186, 0, 149, 63, 58, 151, 131, 143, 244, 56, 37, 182, 239, 237, 25, 217, 15, 125, 162, 209, 210, 243, 34, 221, 21, 189, 80, 113, 86, 59, 159, 123, 249, 147, 8, 79, 28, 18, 163, 24, 136, 104, 69, 215, 198, 10, 11, 168, 164, 164, 172, 185, 231, 46, 37, 96, 181, 196, 204, 146, 9, 123, 206, 245, 153, 92, 169, 5, 94, 191, 188, 75, 232, 183, 83, 171, 41, 11, 234, 41, 198, 6, 105, 210, 101, 37, 154, 106, 199, 55, 31, 132, 108, 94, 90, 171, 140, 93, 21, 161, 174, 27, 138, 94, 6, 5, 124, 12, 44, 207, 46, 43, 187, 107, 215, 65, 82, 171, 198, 43, 103, 200, 115, 113, 230, 58, 244, 43, 25, 140, 86, 65, 53, 19, 12, 161, 132, 226, 187, 42, 136, 158, 168, 54, 45, 100, 37, 241, 222, 35, 170, 22, 168, 105, 76, 32, 76, 209, 121, 175, 72, 26, 34, 18, 93, 249, 101, 129, 208, 88, 87, 134, 90, 82, 163, 97, 136, 87, 216, 10, 220, 128, 62, 174, 64, 136, 7, 165, 132, 126, 217, 177, 24, 19, 232, 241, 38, 104, 162, 206, 128, 6, 117, 170, 212, 225, 41, 222, 33, 147, 26, 156, 132, 123, 65, 105, 116, 183, 82, 50, 134, 43, 66, 34, 37, 106, 160, 57, 250, 189, 132, 146, 16, 241, 30, 45, 56, 191, 166, 212, 185, 163, 84, 25, 220, 61, 42, 82, 100, 236, 179, 129, 215, 132, 171, 255, 182, 9, 187, 208, 106, 169, 214, 5, 165, 44, 7, 176, 2, 196, 232, 105, 89, 130, 28, 135, 32, 195, 19, 74, 246, 133, 231, 254, 9, 228, 18, 24, 85, 195, 248, 198, 115, 135, 131, 201, 216, 107, 115, 119, 109, 244, 140, 174, 43, 230, 43, 224, 121, 52, 156, 140, 168, 29, 199, 52, 170, 138, 94, 85, 129, 31, 167, 67, 229, 43, 107, 210, 64, 117, 171, 24, 71, 249, 4, 215, 2, 35, 127, 68, 98, 118, 163, 99, 82, 128, 149, 90, 170, 182, 197, 143, 1, 153, 100, 188, 189, 242, 142, 75, 134, 195, 10, 102, 137, 54, 79, 204, 25, 66, 44, 231, 116, 37, 149, 141, 51, 194, 203, 12, 3, 125, 95, 131, 214, 89, 157, 65, 9, 80, 175, 0, 194, 38, 212, 234, 51, 109, 109, 47, 243, 76, 188, 135, 180, 104, 142, 208, 154, 42, 45, 14, 170, 159, 119, 107, 104, 218, 178, 152, 154, 108, 111, 140, 151, 121, 170, 91, 146, 245, 64, 187, 86, 100, 175, 164, 56, 137, 164, 163, 48, 152, 93, 249, 196, 105, 96, 40, 96, 72, 135, 172, 198, 224, 249, 222, 132, 107, 207, 73, 38, 29, 69, 177, 189, 217, 138, 30, 145, 70, 143, 203, 6, 194, 147, 251, 28, 77, 202, 145, 38, 83, 5, 16, 37, 22, 222, 199, 164, 156, 202, 51, 99, 160, 30, 215, 172, 62, 175, 140, 74, 243, 74, 143, 115, 122, 73, 55, 161, 93, 96, 53, 75, 217, 79, 155, 102, 195, 246, 23, 11, 53, 183, 198, 154, 207, 9, 214, 206, 245, 156, 63, 82, 51, 249, 229, 211, 167, 79, 111, 146, 127, 201, 255, 100, 130, 39, 61, 47, 103, 20, 244, 52, 171, 26, 212, 106, 127, 166, 141, 207, 12, 78, 83, 148, 44, 70, 152, 36, 149, 149, 49, 136, 161, 157, 233, 185, 149, 113, 84, 167, 202, 165, 170, 224, 125, 66, 124, 165, 234, 116, 0, 253, 52, 155, 166, 214, 139, 5, 36, 21, 66, 93, 232, 106, 54, 188, 156, 80, 85, 167, 87, 10, 238, 205, 86, 240, 184, 241, 209, 6, 229, 188, 164, 163, 26, 154, 38, 83, 41, 101, 14, 153, 78, 155, 20, 207, 29, 170, 69, 125, 209, 56, 149, 42, 175, 89, 211, 241, 178, 187, 121, 63, 2, 42, 109, 6, 121, 69, 149, 95, 58, 43, 88, 9, 64, 211, 56, 130, 45, 62, 3, 94, 101, 212, 87, 83, 214, 99, 33, 7, 28, 11, 79, 9, 135, 162, 24, 137, 157, 211, 240, 164, 102, 253, 3, 231, 121, 24, 21, 201, 207, 116, 118, 184, 58, 208, 171, 85, 121, 31, 136, 60, 225, 198, 229, 238, 60, 72, 76, 62, 209, 248, 172, 127, 7, 57, 193, 191, 247, 183, 136, 214, 58, 170, 191, 143, 10, 245, 65, 22, 143, 89, 126, 48, 213, 211, 36, 37, 243, 46, 184, 207, 72, 240, 143, 191, 238, 117, 138, 124, 29, 204, 27, 103, 212, 110, 225, 252, 3, 46, 215, 199, 31, 186, 65, 26, 66, 222, 221, 122, 68, 84, 197, 2, 112, 200, 44, 36, 240, 241, 71, 244, 158, 131, 178, 23, 127, 192, 81, 172, 159, 78, 161, 223, 0, 7, 7, 22, 72, 121, 158, 169, 72, 75, 16, 146, 84, 184, 43, 94, 93, 140, 168, 22, 163, 60, 105, 145, 199, 143, 153, 91, 141, 148, 101, 217, 31, 154, 48, 211, 155, 193, 43, 114, 235, 156, 80, 13, 22, 189, 211, 230, 138, 105, 76, 128, 236, 197, 123, 9, 94, 123, 66, 10, 64, 4, 30, 217, 207, 80, 62, 213, 123, 167, 242, 230, 49, 213, 214, 77, 237, 101, 12, 204, 133, 158, 103, 22, 3, 71, 135, 96, 62, 168, 134, 27, 149, 98, 165, 58, 89, 87, 23, 60, 151, 146, 111, 190, 44, 137, 22, 45, 210, 64, 134, 149, 24, 87, 35, 3, 191, 68, 226, 239, 248, 20, 70, 245, 214, 216, 88, 153, 12, 121, 143, 219, 77, 175, 48, 48, 179, 101, 246, 25, 165, 2, 48, 157, 247, 168, 94, 180, 33, 54, 203, 109, 119, 253, 201, 159, 191, 252, 235, 31, 5, 76, 133, 9, 205, 246, 250, 207, 255, 250, 215, 211, 127, 245, 217, 103, 183, 255, 248, 191, 244, 183, 223, 22, 191, 190, 146, 63, 87, 82, 235, 190, 197, 198, 102, 142, 46, 142, 199, 253, 95, 241, 206, 107, 98, 180, 221, 100, 146, 145, 82, 39, 30, 163, 119, 236, 41, 168, 32, 92, 226, 159, 201, 231, 139, 1, 28, 127, 74, 20, 52, 89, 39, 232, 92, 252, 142, 70, 10, 84, 239, 44, 126, 186, 204, 96, 80, 241, 33, 106, 39, 21, 88, 36, 110, 204, 188, 31, 129, 168, 30, 116, 84, 90, 11, 162, 210, 165, 80, 212, 71, 61, 13, 250, 75, 52, 102, 65, 106, 157, 222, 77, 243, 186, 236, 243, 242, 102, 117, 206, 231, 52, 83, 79, 160, 37, 158, 211, 15, 198, 171, 44, 231, 135, 166, 207, 203, 251, 46, 41, 103, 223, 245, 124, 179, 46, 22, 227, 226, 75, 50, 117, 158, 198, 195, 248, 79, 103, 149, 160, 115, 43, 187, 182, 235, 173, 85, 109, 91, 99, 153, 187, 215, 218, 212, 134, 114, 235, 184, 103, 90, 30, 22, 20, 96, 13, 50, 81, 97, 33, 189, 100, 14, 139, 180, 14, 155, 174, 253, 212, 117, 61, 166, 214, 125, 207, 47, 247, 153, 169, 204, 151, 20, 85, 61, 14, 83, 251, 142, 105, 26, 250, 102, 184, 120, 199, 192, 25, 252, 140, 197, 240, 102, 122, 116, 236, 69, 170, 234, 78, 98, 8, 219, 132, 61, 203, 167, 166, 95, 108, 210, 253, 5, 127, 94, 6, 235, 163, 104, 98, 243, 78, 42, 113, 71, 106, 140, 209, 173, 86, 240, 206, 42, 117, 213, 59, 174, 157, 116, 204, 31, 169, 189, 224, 218, 219, 32, 160, 91, 168, 206, 119, 3, 36, 28, 79, 243, 85, 250, 226, 118, 15, 45, 105, 91, 12, 101, 233, 136, 220, 216, 76, 104, 211, 133, 0, 32, 21, 127, 206, 164, 179, 147, 15, 17, 233, 179, 110, 219, 130, 166, 178, 163, 187, 45, 226, 146, 174, 244, 88, 181, 69, 85, 202, 2, 233, 97, 172, 211, 226, 32, 5, 41, 93, 121, 157, 123, 192, 210, 11, 71, 239, 102, 75, 26, 66, 65, 106, 5, 51, 94, 78, 21, 180, 135, 203, 43, 126, 123, 131, 197, 151, 217, 182, 157, 240, 224, 110, 222, 205, 190, 202, 232, 171, 253, 158, 164, 163, 47, 64, 10, 152, 96, 19, 234, 133, 39, 130, 160, 70, 166, 174, 93, 147, 105, 37, 115, 1, 36, 244, 165, 59, 222, 181, 41, 210, 162, 203, 12, 16, 113, 51, 149, 224, 141, 92, 57, 62, 12, 146, 219, 167, 168, 186, 154, 220, 200, 242, 97, 162, 52, 175, 114, 114, 153, 195, 244, 48, 37, 83, 61, 101, 6, 134, 76, 65, 204, 222, 59, 228, 83, 182, 83, 127, 199, 232, 238, 90, 120, 120, 67, 210, 104, 195, 246, 47, 248, 180, 233, 111, 103, 126, 202, 34, 33, 249, 100, 185, 28, 184, 94, 129, 90, 125, 123, 198, 123, 37, 140, 63, 18, 105, 123, 80, 187, 164, 66, 128, 120, 213, 94, 66, 124, 36, 3, 32, 79, 173, 122, 65, 34, 48, 17, 115, 73, 208, 136, 25, 126, 176, 162, 81, 64, 74, 172, 60, 167, 164, 251, 29, 243, 29, 124, 119, 46, 153, 146, 33, 170, 193, 84, 233, 116, 33, 192, 78, 182, 157, 6, 96, 116, 50, 184, 244, 55, 19, 166, 78, 231, 62, 22, 163, 71, 166, 192, 170, 117, 2, 94, 156, 35, 79, 166, 33, 18, 115, 240, 24, 224, 114, 232, 64, 196, 81, 76, 106, 13, 45, 112, 236, 75, 88, 228, 32, 177, 237, 214, 252, 246, 70, 77, 143, 209, 242, 174, 174, 49, 125, 236, 58, 243, 80, 126, 187, 127, 95, 176, 128, 120, 212, 62, 172, 185, 193, 137, 60, 120, 67, 230, 98, 70, 53, 99, 19, 141, 28, 24, 64, 92, 13, 12, 205, 114, 168, 238, 46, 232, 203, 195, 110, 129, 166, 187, 172, 120, 124, 71, 30, 147, 232, 124, 113, 185, 86, 157, 112, 169, 47, 123, 245, 95, 45, 78, 65, 124, 133, 213, 98, 90, 60, 44, 190, 10, 190, 13, 216, 34, 236, 3, 164, 45, 154, 235, 63, 68, 129, 200, 41, 36, 214, 162, 56, 168, 3, 36, 224, 167, 84, 231, 101, 138, 217, 5, 110, 115, 34, 253, 90, 19, 152, 40, 139, 180, 159, 150, 72, 189, 204, 204, 194, 111, 148, 184, 136, 47, 234, 155, 162, 118, 22, 17, 192, 144, 199, 57, 228, 14, 139, 79, 77, 15, 232, 239, 165, 81, 114, 210, 7, 122, 165, 248, 30, 8, 28, 143, 240, 103, 211, 37, 154, 17, 162, 159, 254, 229, 245, 240, 158, 19, 79, 185, 34, 49, 250, 9, 81, 97, 155, 136, 219, 128, 194, 120, 98, 16, 188, 212, 162, 68, 128, 242, 176, 156, 164, 107, 133, 102, 216, 1, 186, 39, 59, 54, 8, 155, 9, 157, 99, 216, 27, 48, 70, 23, 92, 180, 240, 153, 0, 222, 119, 10, 75, 55, 37, 130, 52, 241, 164, 62, 51, 92, 210, 79, 203, 232, 52, 230, 60, 195, 100, 100, 12, 194, 77, 88, 145, 246, 217, 96, 181, 189, 17, 4, 147, 242, 196, 129, 61, 205, 150, 48, 241, 22, 200, 176, 73, 138, 143, 85, 122, 86, 105, 115, 251, 217, 150, 204, 21, 41, 166, 194, 99, 237, 81, 44, 88, 225, 179, 249, 161, 135, 48, 150, 60, 54, 128, 252, 142, 236, 251, 248, 189, 157, 139, 194, 169, 180, 244, 118, 83, 140, 160, 186, 74, 30, 156, 225, 67, 227, 127, 10, 213, 241, 134, 246, 131, 23, 68, 60, 44, 74, 209, 241, 152, 96, 179, 152, 78, 93, 62, 101, 102, 121, 73, 179, 250, 45, 238, 234, 69, 22, 43, 52, 42, 78, 227, 229, 225, 114, 105, 24, 77, 47, 48, 117, 197, 236, 200, 101, 175, 22, 245, 187, 168, 65, 221, 186, 142, 22, 88, 214, 227, 71, 165, 30, 18, 47, 197, 71, 156, 50, 100, 249, 108, 82, 35, 228, 199, 71, 183, 157, 159, 28, 60, 125, 250, 192, 138, 188, 60, 135, 233, 3, 193, 72, 180, 209, 212, 217, 237, 14, 160, 78, 165, 75, 101, 169, 170, 51, 155, 77, 232, 200, 123, 4, 28, 27, 220, 30, 10, 250, 227, 137, 153, 108, 174, 40, 207, 109, 155, 28, 184, 114, 115, 131, 229, 254, 198, 26, 115, 97, 83, 239, 212, 224, 32, 114, 240, 224, 234, 233, 3, 39, 111, 173, 158, 123, 7, 22, 86, 143, 30, 64, 14, 96, 110, 36, 193, 112, 235, 56, 48, 88, 69, 86, 129, 222, 30, 12, 69, 153, 52, 87, 22, 171, 181, 102, 107, 245, 0, 83, 201, 16, 235, 154, 118, 88, 220, 220, 102, 170, 101, 175, 143, 243, 235, 55, 159, 221, 103, 148, 49, 35, 92, 14, 152, 75, 185, 36, 30, 222, 111, 174, 223, 139, 15, 66, 251, 184, 24, 154, 157, 209, 240, 150, 193, 103, 242, 39, 232, 115, 192, 143, 197, 150, 78, 116, 36, 152, 166, 145, 221, 92, 239, 199, 186, 90, 141, 85, 117, 94, 97, 2, 112, 57, 196, 123, 57, 244, 80, 28, 5, 39, 252, 86, 163, 153, 217, 201, 205, 120, 57, 38, 119, 27, 159, 231, 135, 52, 209, 190, 185, 102, 159, 188, 185, 185, 186, 190, 58, 179, 188, 182, 10, 94, 216, 242, 9, 88, 98, 209, 90, 146, 46, 14, 250, 5, 97, 39, 149, 159, 153, 144, 102, 138, 4, 217, 97, 86, 137, 7, 198, 88, 95, 103, 182, 198, 24, 180, 3, 24, 53, 239, 135, 228, 159, 48, 170, 237, 82, 27, 23, 181, 38, 94, 187, 215, 23, 197, 182, 116, 227, 184, 240, 44, 34, 138, 143, 169, 220, 167, 151, 123, 151, 45, 22, 144, 165, 149, 103, 254, 42, 83, 207, 29, 116, 79, 104, 200, 12, 222, 97, 60, 27, 5, 206, 200, 78, 217, 165, 17, 137, 173, 183, 109, 39, 31, 9, 84, 246, 208, 248, 95, 17, 249, 83, 124, 79, 201, 239, 65, 168, 97, 130, 126, 35, 137, 193, 229, 231, 253, 143, 195, 62, 173, 64, 195, 164, 5, 112, 33, 47, 172, 239, 98, 90, 232, 95, 68, 77, 123, 247, 227, 184, 73, 29, 110, 213, 184, 2, 124, 237, 154, 195, 227, 228, 10, 172, 246, 161, 134, 133, 14, 26, 239, 65, 248, 6, 255, 139, 115, 48, 116, 71, 208, 168, 58, 241, 37, 104, 183, 118, 1, 49, 77, 225, 205, 218, 151, 216, 243, 83, 47, 99, 90, 197, 142, 207, 7, 182, 105, 188, 46, 149, 136, 114, 143, 251, 162, 54, 166, 232, 59, 106, 79, 159, 243, 79, 8, 169, 7, 139, 213, 230, 157, 131, 110, 135, 185, 209, 61, 36, 224, 178, 185, 34, 199, 182, 37, 166, 54, 99, 145, 157, 179, 229, 20, 197, 233, 192, 108, 89, 252, 132, 186, 134, 240, 80, 60, 195, 114, 138, 244, 155, 108, 192, 111, 162, 98, 184, 252, 40, 141, 39, 250, 21, 193, 37, 184, 36, 95, 71, 151, 246, 55, 87, 167, 120, 173, 175, 175, 247, 47, 243, 117, 160, 249, 54, 172, 221, 244, 14, 215, 237, 229, 165, 107, 97, 217, 46, 159, 73, 91, 122, 187, 115, 187, 103, 74, 231, 220, 126, 230, 215, 95, 129, 196, 14, 188, 137, 161, 234, 128, 15, 87, 228, 14, 209, 199, 58, 55, 124, 232, 69, 211, 216, 156, 52, 217, 85, 104, 198, 71, 226, 221, 3, 12, 115, 47, 101, 97, 150, 44, 35, 35, 165, 163, 115, 214, 182, 13, 131, 46, 6, 64, 91, 203, 232, 196, 138, 199, 82, 75, 66, 26, 98, 34, 68, 171, 96, 115, 35, 87, 96, 130, 71, 240, 94, 143, 192, 90, 73, 69, 150, 66, 110, 180, 139, 25, 13, 113, 162, 125, 87, 22, 184, 217, 242, 122, 66, 130, 152, 220, 36, 222, 130, 130, 59, 27, 9, 115, 204, 138, 43, 129, 199, 245, 250, 164, 67, 126, 224, 182, 169, 107, 79, 229, 240, 35, 91, 205, 220, 53, 238, 25, 108, 26, 31, 208, 219, 1, 158, 13, 84, 217, 141, 242, 84, 240, 181, 1, 188, 55, 116, 62, 111, 114, 140, 92, 41, 71, 190, 237, 70, 54, 47, 27, 42, 248, 202, 111, 122, 154, 95, 75, 11, 125, 183, 66, 239, 94, 202, 150, 239, 121, 214, 32, 181, 216, 161, 208, 16, 124, 238, 180, 196, 20, 22, 167, 83, 129, 146, 229, 147, 165, 36, 57, 171, 81, 34, 101, 26, 248, 217, 222, 231, 191, 191, 85, 243, 135, 142, 104, 205, 150, 92, 60, 164, 92, 90, 24, 38, 225, 217, 191, 194, 50, 125, 129, 195, 170, 68, 155, 40, 248, 54, 60, 178, 171, 209, 233, 212, 104, 15, 142, 101, 109, 161, 77, 154, 208, 108, 121, 90, 99, 76, 164, 105, 52, 108, 232, 155, 66, 10, 154, 63, 187, 165, 94, 26, 188, 201, 169, 107, 137, 164, 51, 250, 80, 213, 56, 97, 67, 51, 213, 223, 9, 39, 161, 19, 89, 220, 220, 223, 223, 153, 168, 241, 222, 65, 227, 22, 239, 99, 113, 42, 203, 42, 173, 26, 82, 29, 181, 111, 250, 105, 181, 217, 146, 157, 25, 249, 164, 54, 198, 37, 60, 82, 93, 85, 227, 212, 137, 80, 227, 49, 236, 248, 79, 157, 166, 6, 201, 236, 110, 11, 126, 14, 113, 202, 151, 169, 86, 33, 46, 0, 52, 182, 29, 91, 205, 190, 229, 237, 91, 198, 130, 251, 176, 211, 96, 243, 244, 49, 203, 30, 161, 37, 42, 111, 99, 146, 24, 36, 102, 196, 21, 197, 176, 190, 173, 28, 9, 122, 239, 125, 24, 179, 137, 169, 122, 2, 144, 80, 55, 54, 47, 235, 134, 54, 159, 179, 16, 138, 31, 104, 146, 136, 217, 111, 10, 214, 140, 61, 112, 254, 112, 134, 171, 178, 240, 48, 48, 127, 38, 187, 74, 46, 84, 143, 57, 196, 151, 190, 31, 54, 213, 182, 240, 245, 10, 218, 221, 88, 224, 83, 93, 6, 126, 177, 91, 116, 169, 226, 27, 181, 22, 34, 175, 3, 160, 31, 85, 241, 86, 202, 183, 207, 164, 146, 70, 2, 82, 165, 37, 114, 221, 26, 204, 163, 220, 37, 139, 65, 64, 197, 142, 151, 28, 238, 74, 42, 103, 89, 43, 59, 223, 26, 44, 35, 186, 90, 1, 173, 19, 214, 180, 168, 228, 18, 80, 179, 200, 81, 158, 112, 241, 166, 214, 168, 235, 148, 153, 52, 45, 185, 219, 192, 134, 217, 168, 72, 60, 157, 147, 26, 109, 253, 96, 174, 235, 116, 162, 84, 154, 73, 8, 66, 161, 55, 196, 5, 175, 48, 133, 161, 2, 35, 213, 145, 108, 66, 79, 39, 25, 38, 168, 221, 111, 68, 80, 18, 221, 251, 13, 200, 103, 36, 74, 134, 188, 146, 163, 15, 185, 70, 223, 224, 75, 133, 126, 56, 18, 139, 164, 184, 118, 158, 170, 9, 50, 107, 16, 117, 13, 23, 195, 148, 36, 174, 97, 134, 168, 129, 212, 119, 100, 91, 204, 196, 241, 60, 39, 15, 99, 60, 31, 110, 136, 85, 53, 144, 48, 163, 12, 68, 73, 204, 203, 67, 157, 72, 132, 167, 219, 195, 48, 45, 128, 96, 202, 208, 127, 98, 37, 30, 63, 68, 175, 77, 218, 125, 19, 210, 159, 51, 65, 133, 137, 207, 202, 52, 40, 230, 76, 217, 160, 184, 209, 26, 162, 49, 223, 113, 79, 125, 52, 103, 98, 196, 60, 46, 153, 88, 102, 90, 204, 165, 224, 214, 37, 10, 71, 245, 228, 35, 237, 66, 206, 60, 201, 48, 240, 204, 168, 29, 116, 79, 28, 72, 197, 29, 29, 3, 19, 43, 1, 144, 21, 225, 16, 60, 186, 181, 210, 104, 49, 134, 59, 70, 8, 105, 119, 206, 242, 237, 125, 197, 232, 55, 19, 156, 150, 55, 139, 69, 179, 156, 219, 38, 252, 244, 21, 218, 207, 23, 236, 197, 237, 112, 227, 151, 141, 90, 229, 232, 199, 108, 46, 223, 178, 65, 27, 153, 45, 74, 64, 145, 85, 151, 201, 234, 106, 217, 247, 97, 156, 98, 48, 80, 42, 232, 54, 109, 217, 205, 117, 119, 229, 199, 160, 214, 184, 8, 175, 46, 212, 104, 87, 69, 67, 50, 169, 22, 199, 13, 186, 180, 221, 99, 249, 4, 33, 135, 88, 102, 26, 226, 195, 216, 166, 17, 143, 167, 204, 244, 205, 110, 95, 238, 159, 113, 186, 164, 118, 194, 97, 154, 206, 174, 198, 151, 202, 188, 179, 155, 113, 133, 46, 109, 246, 88, 62, 22, 123, 188, 235, 171, 177, 111, 210, 230, 41, 186, 174, 182, 244, 205, 60, 162, 93, 169, 86, 12, 151, 149, 219, 122, 37, 95, 232, 214, 99, 24, 180, 171, 48, 220, 238, 14, 165, 10, 245, 246, 192, 160, 44, 215, 210, 11, 105, 80, 32, 10, 83, 88, 161, 208, 202, 148, 219, 160, 133, 184, 209, 150, 11, 120, 92, 158, 254, 80, 227, 82, 69, 253, 22, 127, 127, 104, 180, 200, 6, 212, 221, 212, 243, 21, 167, 228, 147, 163, 81, 78, 50, 197, 99, 66, 45, 92, 126, 19, 218, 170, 204, 8, 168, 206, 66, 249, 35, 172, 80, 169, 247, 12, 139, 11, 12, 59, 199, 10, 66, 26, 207, 35, 36, 154, 239, 27, 134, 124, 189, 166, 113, 27, 188, 41, 94, 72, 154, 125, 161, 28, 53, 148, 228, 114, 149, 122, 191, 201, 42, 251, 236, 142, 166, 233, 172, 230, 241, 72, 36, 156, 192, 124, 118, 21, 102, 119, 135, 211, 51, 217, 162, 168, 151, 42, 153, 66, 65, 148, 48, 147, 44, 230, 102, 74, 46, 41, 28, 182, 184, 0, 229, 162, 142, 238, 139, 179, 1, 75, 128, 149, 120, 6, 184, 137, 95, 56, 249, 138, 149, 200, 149, 124, 34, 2, 230, 166, 147, 155, 55, 178, 226, 110, 15, 244, 135, 25, 67, 140, 165, 67, 33, 166, 82, 157, 9, 192, 200, 188, 134, 202, 78, 17, 250, 148, 117, 79, 249, 155, 43, 68, 227, 219, 193, 43, 36, 91, 177, 137, 161, 167, 197, 68, 40, 12, 149, 31, 200, 49, 228, 103, 118, 31, 170, 250, 176, 97, 219, 224, 69, 134, 164, 104, 196, 200, 101, 215, 241, 22, 202, 110, 168, 68, 242, 26, 57, 185, 148, 209, 57, 14, 185, 14, 238, 107, 7, 56, 113, 37, 61, 45, 163, 229, 132, 112, 249, 24, 239, 72, 109, 12, 111, 156, 105, 150, 129, 51, 79, 58, 201, 65, 225, 114, 60, 198, 125, 87, 145, 139, 89, 4, 95, 59, 87, 126, 39, 223, 75, 34, 159, 35, 81, 63, 36, 87, 123, 130, 84, 209, 135, 141, 149, 102, 139, 255, 220, 190, 150, 238, 134, 246, 166, 19, 115, 57, 127, 46, 234, 159, 233, 200, 157, 128, 244, 138, 209, 108, 163, 44, 46, 109, 29, 142, 166, 35, 62, 218, 228, 182, 218, 162, 153, 100, 106, 219, 161, 61, 147, 230, 98, 175, 175, 53, 218, 220, 116, 36, 149, 17, 27, 253, 197, 209, 214, 201, 33, 226, 200, 225, 40, 61, 141, 166, 244, 202, 51, 196, 49, 92, 78, 241, 84, 44, 22, 228, 15, 141, 150, 208, 61, 159, 21, 221, 179, 127, 211, 206, 157, 171, 251, 155, 98, 22, 237, 111, 4, 207, 20, 250, 131, 130, 44, 87, 7, 252, 254, 193, 96, 63, 143, 98, 132, 83, 34, 213, 233, 216, 4, 120, 70, 182, 90, 181, 232, 34, 15, 173, 172, 124, 19, 32, 181, 66, 153, 188, 196, 125, 155, 197, 229, 136, 47, 201, 103, 166, 78, 122, 51, 167, 253, 145, 46, 170, 52, 70, 179, 205, 49, 77, 249, 2, 97, 38, 197, 103, 242, 68, 69, 140, 176, 73, 238, 234, 167, 60, 132, 112, 172, 187, 16, 23, 37, 249, 97, 18, 34, 133, 236, 85, 54, 202, 65, 193, 108, 22, 82, 14, 142, 5, 206, 225, 146, 51, 92, 14, 134, 175, 242, 66, 239, 244, 199, 33, 225, 91, 223, 64, 110, 240, 56, 157, 122, 31, 93, 116, 243, 82, 22, 60, 91, 90, 55, 20, 123, 74, 240, 32, 242, 67, 183, 100, 151, 251, 72, 43, 248, 66, 45, 137, 160, 199, 83, 190, 72, 129, 14, 86, 174, 241, 134, 33, 187, 70, 65, 236, 255, 72, 215, 162, 197, 117, 190, 6, 98, 130, 179, 138, 143, 114, 97, 41, 220, 143, 49, 40, 150, 179, 118, 10, 48, 165, 217, 20, 212, 230, 234, 20, 205, 99, 161, 2, 17, 180, 117, 238, 244, 221, 42, 227, 243, 149, 191, 57, 228, 75, 251, 60, 187, 255, 43, 211, 118, 164, 83, 199, 99, 6, 100, 60, 28, 39, 147, 144, 107, 15, 86, 173, 222, 224, 207, 86, 158, 40, 142, 17, 154, 167, 44, 204, 163, 176, 128, 3, 190, 57, 160, 141, 147, 132, 3, 237, 27, 45, 53, 48, 62, 245, 169, 5, 251, 57, 20, 32, 56, 67, 33, 166, 50, 12, 74, 252, 158, 122, 2, 189, 57, 163, 125, 166, 197, 215, 72, 34, 243, 179, 15, 156, 46, 13, 232, 60, 79, 192, 105, 161, 227, 194, 107, 201, 18, 249, 108, 155, 27, 180, 22, 171, 10, 116, 203, 98, 200, 33, 159, 92, 98, 163, 177, 3, 93, 181, 25, 222, 49, 118, 156, 90, 159, 108, 181, 173, 253, 114, 181, 230, 110, 198, 226, 136, 220, 171, 118, 55, 211, 203, 253, 114, 189, 194, 49, 214, 105, 65, 195, 83, 40, 161, 233, 177, 140, 145, 205, 18, 140, 172, 86, 161, 220, 177, 225, 205, 90, 76, 48, 126, 162, 93, 128, 71, 39, 198, 173, 238, 44, 183, 142, 40, 99, 65, 4, 210, 96, 243, 136, 185, 88, 88, 36, 78, 253, 40, 171, 189, 80, 74, 44, 218, 85, 146, 199, 172, 171, 36, 31, 227, 72, 21, 115, 173, 7, 37, 136, 216, 216, 118, 116, 57, 21, 64, 51, 141, 98, 34, 76, 149, 185, 125, 198, 13, 212, 210, 236, 72, 35, 50, 92, 209, 172, 43, 205, 218, 26, 145, 59, 104, 180, 116, 49, 132, 226, 17, 187, 181, 242, 218, 221, 228, 106, 11, 36, 61, 237, 108, 49, 215, 54, 153, 102, 45, 214, 100, 50, 25, 10, 35, 33, 139, 39, 89, 76, 195, 243, 24, 132, 118, 200, 5, 160, 41, 35, 13, 111, 203, 181, 202, 23, 249, 28, 241, 3, 57, 138, 84, 49, 85, 164, 201, 71, 21, 44, 3, 202, 186, 56, 109, 40, 215, 58, 185, 240, 94, 15, 147, 109, 77, 216, 176, 5, 194, 172, 170, 201, 139, 85, 193, 175, 10, 191, 233, 201, 25, 48, 162, 57, 170, 68, 235, 96, 57, 95, 156, 228, 58, 40, 107, 145, 108, 224, 26, 143, 231, 105, 176, 249, 106, 150, 99, 231, 64, 2, 41, 23, 23, 99, 194, 189, 44, 119, 37, 170, 115, 1, 114, 75, 43, 95, 101, 224, 188, 167, 94, 166, 20, 42, 194, 205, 189, 109, 129, 153, 184, 27, 2, 164, 225, 151, 107, 162, 181, 163, 101, 203, 50, 146, 116, 13, 75, 115, 116, 20, 81, 170, 8, 33, 173, 5, 34, 70, 200, 215, 246, 125, 110, 188, 56, 41, 18, 181, 130, 64, 52, 74, 203, 21, 119, 149, 53, 196, 148, 255, 88, 40, 91, 48, 105, 156, 194, 140, 4, 230, 90, 200, 14, 83, 34, 72, 169, 75, 18, 210, 38, 170, 238, 141, 164, 107, 199, 100, 163, 108, 78, 95, 234, 147, 215, 81, 233, 156, 42, 173, 101, 139, 34, 237, 60, 121, 118, 53, 47, 219, 82, 25, 158, 110, 149, 106, 5, 93, 100, 186, 65, 24, 67, 250, 102, 7, 185, 245, 186, 153, 180, 221, 211, 123, 166, 224, 158, 12, 169, 250, 83, 175, 114, 208, 35, 68, 110, 36, 5, 49, 199, 9, 72, 115, 222, 24, 202, 27, 64, 144, 66, 135, 51, 87, 111, 163, 132, 34, 96, 162, 186, 245, 50, 174, 69, 50, 205, 139, 0, 131, 240, 36, 185, 226, 194, 94, 58, 154, 246, 161, 164, 136, 0, 14, 8, 161, 52, 105, 225, 182, 99, 169, 221, 135, 51, 108, 232, 179, 42, 14, 101, 98, 193, 82, 170, 248, 74, 147, 38, 146, 212, 214, 167, 181, 186, 102, 43, 220, 223, 104, 60, 47, 61, 41, 144, 8, 132, 72, 196, 41, 161, 219, 139, 110, 3, 114, 205, 129, 72, 71, 68, 183, 244, 211, 193, 22, 68, 210, 129, 73, 22, 20, 83, 202, 226, 149, 161, 5, 99, 77, 250, 102, 42, 45, 228, 21, 9, 57, 114, 181, 189, 0, 91, 199, 59, 104, 23, 35, 175, 14, 35, 93, 205, 73, 120, 70, 37, 152, 200, 185, 243, 148, 235, 103, 242, 161, 27, 237, 52, 60, 51, 213, 199, 92, 16, 225, 164, 116, 46, 225, 206, 217, 16, 33, 29, 145, 206, 203, 65, 81, 137, 97, 104, 92, 244, 141, 127, 162, 81, 212, 168, 17, 229, 157, 24, 162, 26, 204, 218, 107, 185, 189, 134, 87, 219, 133, 133, 116, 52, 91, 246, 217, 167, 175, 87, 47, 150, 40, 191, 172, 246, 47, 222, 2, 123, 189, 79, 4, 125, 185, 175, 252, 249, 234, 170, 62, 60, 251, 40, 129, 198, 143, 42, 232, 178, 108, 109, 201, 236, 194, 15, 152, 170, 89, 85, 36, 47, 236, 18, 214, 131, 49, 97, 125, 249, 146, 189, 62, 222, 20, 187, 50, 121, 74, 167, 93, 122, 6, 59, 189, 91, 238, 80, 227, 78, 101, 186, 34, 185, 66, 190, 190, 119, 101, 45, 94, 156, 17, 229, 135, 71, 251, 72, 173, 203, 233, 145, 50, 84, 63, 138, 235, 228, 12, 60, 66, 65, 88, 52, 114, 201, 244, 18, 146, 205, 180, 61, 96, 28, 165, 118, 176, 135, 220, 41, 120, 53, 239, 26, 121, 38, 162, 181, 135, 213, 169, 157, 74, 253, 214, 104, 201, 82, 56, 160, 250, 171, 149, 184, 165, 205, 104, 149, 180, 185, 35, 8, 88, 238, 50, 169, 61, 37, 96, 165, 17, 181, 140, 235, 42, 241, 150, 154, 12, 147, 22, 25, 3, 189, 123, 153, 169, 2, 24, 54, 178, 1, 226, 208, 196, 61, 71, 194, 91, 64, 107, 0, 124, 68, 50, 145, 71, 31, 226, 204, 150, 134, 133, 199, 45, 94, 85, 16, 86, 155, 219, 212, 72, 195, 185, 99, 132, 90, 137, 118, 99, 169, 41, 106, 0, 62, 221, 185, 234, 164, 207, 250, 102, 28, 202, 202, 5, 194, 13, 166, 181, 49, 52, 8, 163, 3, 199, 158, 229, 104, 231, 64, 41, 78, 185, 185, 181, 92, 33, 199, 70, 225, 217, 235, 151, 82, 82, 32, 11, 160, 104, 148, 73, 87, 120, 221, 228, 118, 78, 70, 192, 179, 116, 81, 202, 167, 37, 41, 176, 169, 178, 171, 120, 42, 210, 13, 85, 246, 76, 202, 90, 200, 111, 113, 239, 146, 155, 242, 50, 231, 83, 105, 73, 137, 108, 33, 86, 37, 150, 29, 182, 141, 47, 45, 175, 204, 6, 42, 254, 73, 200, 86, 226, 41, 97, 72, 218, 252, 145, 243, 122, 178, 40, 115, 95, 171, 193, 38, 242, 13, 155, 200, 177, 141, 96, 241, 204, 218, 42, 221, 148, 124, 174, 196, 85, 229, 11, 52, 217, 149, 57, 173, 172, 53, 69, 190, 133, 200, 145, 166, 218, 29, 18, 228, 61, 255, 178, 255, 190, 255, 33, 254, 34, 114, 163, 184, 139, 214, 121, 144, 53, 18, 155, 207, 252, 199, 13, 69, 105, 132, 23, 40, 78, 77, 208, 65, 161, 175, 50, 241, 152, 30, 197, 225, 186, 175, 156, 179, 178, 216, 197, 38, 229, 126, 52, 216, 181, 77, 227, 18, 149, 30, 138, 100, 198, 162, 180, 68, 113, 9, 60, 113, 241, 85, 146, 204, 154, 171, 25, 73, 43, 3, 30, 5, 210, 169, 24, 76, 118, 154, 94, 46, 220, 176, 206, 9, 95, 155, 42, 153, 89, 16, 68, 253, 12, 24, 103, 24, 51, 9, 171, 51, 212, 19, 5, 179, 252, 62, 77, 153, 179, 28, 83, 40, 133, 174, 202, 50, 88, 131, 64, 7, 52, 255, 253, 204, 183, 171, 110, 238, 123, 39, 116, 129, 150, 238, 232, 110, 171, 74, 172, 84, 158, 78, 35, 215, 207, 115, 255, 204, 69, 231, 33, 140, 90, 15, 148, 3, 15, 199, 163, 88, 60, 14, 58, 19, 247, 115, 241, 85, 58, 103, 25, 44, 125, 72, 203, 37, 84, 161, 55, 83, 147, 36, 180, 183, 235, 144, 1, 73, 214, 49, 15, 179, 219, 210, 13, 226, 185, 232, 168, 77, 30, 155, 54, 89, 84, 87, 211, 163, 9, 118, 126, 27, 66, 133, 201, 3, 249, 117, 96, 87, 151, 42, 195, 74, 225, 237, 233, 107, 181, 109, 183, 225, 153, 237, 118, 50, 243, 218, 172, 28, 101, 134, 169, 125, 6, 38, 187, 3, 55, 98, 214, 188, 42, 146, 77, 249, 106, 1, 155, 122, 237, 125, 137, 81, 128, 100, 161, 251, 11, 149, 61, 100, 9, 161, 151, 72, 185, 174, 103, 210, 177, 245, 134, 133, 158, 86, 122, 137, 41, 13, 47, 34, 187, 57, 95, 168, 52, 243, 131, 35, 112, 158, 104, 109, 118, 118, 10, 145, 223, 107, 76, 19, 49, 199, 222, 208, 121, 153, 202, 12, 159, 72, 201, 178, 116, 207, 212, 131, 96, 196, 109, 218, 115, 6, 89, 2, 18, 81, 114, 82, 67, 148, 176, 247, 198, 216, 57, 209, 57, 244, 77, 245, 235, 249, 166, 177, 193, 41, 235, 247, 100, 141, 71, 19, 57, 229, 12, 49, 97, 135, 2, 186, 0, 41, 11, 141, 97, 192, 135, 235, 84, 173, 171, 177, 232, 241, 37, 244, 53, 97, 144, 49, 188, 92, 253, 146, 58, 82, 206, 206, 224, 113, 133, 174, 174, 222, 165, 79, 156, 66, 143, 43, 19, 14, 38, 174, 165, 132, 89, 169, 14, 105, 199, 38, 186, 234, 153, 115, 218, 27, 212, 118, 33, 242, 17, 15, 17, 53, 99, 198, 70, 136, 69, 75, 89, 184, 44, 143, 148, 209, 197, 19, 173, 75, 91, 169, 178, 2, 215, 76, 50, 102, 155, 86, 37, 35, 199, 40, 171, 61, 78, 157, 113, 66, 178, 187, 86, 89, 218, 102, 62, 123, 156, 106, 229, 132, 100, 75, 22, 152, 172, 140, 65, 203, 155, 103, 58, 52, 92, 172, 165, 21, 201, 86, 148, 8, 93, 14, 49, 217, 65, 218, 63, 39, 92, 69, 177, 178, 5, 155, 181, 230, 82, 94, 138, 121, 198, 252, 174, 229, 107, 173, 140, 170, 192, 246, 152, 167, 17, 176, 12, 78, 196, 251, 88, 42, 223, 181, 73, 16, 56, 138, 148, 250, 26, 248, 176, 229, 51, 27, 113, 197, 78, 121, 196, 109, 74, 221, 13, 23, 136, 200, 66, 212, 73, 3, 77, 201, 239, 189, 15, 192, 117, 163, 139, 161, 150, 64, 27, 141, 74, 60, 155, 80, 152, 106, 230, 5, 147, 71, 194, 216, 21, 187, 216, 101, 8, 233, 2, 113, 252, 213, 175, 202, 158, 226, 160, 181, 136, 42, 177, 70, 199, 78, 197, 149, 125, 90, 179, 31, 33, 53, 106, 235, 200, 40, 178, 138, 248, 14, 174, 108, 139, 130, 246, 57, 198, 142, 67, 159, 55, 103, 242, 220, 3, 212, 43, 208, 188, 62, 195, 67, 33, 235, 126, 71, 201, 165, 145, 182, 191, 33, 43, 240, 145, 28, 250, 89, 221, 191, 219, 254, 181, 207, 169, 36, 108, 17, 52, 150, 184, 85, 57, 172, 71, 46, 237, 222, 62, 136, 103, 113, 180, 132, 197, 163, 200, 227, 237, 49, 152, 173, 250, 13, 115, 127, 56, 8, 194, 252, 22, 119, 214, 119, 115, 15, 103, 107, 65, 215, 239, 8, 85, 230, 71, 202, 30, 68, 220, 50, 53, 52, 56, 244, 174, 233, 182, 55, 116, 165, 67, 102, 173, 185, 247, 83, 240, 5, 174, 196, 34, 198, 79, 198, 88, 119, 177, 125, 159, 182, 154, 80, 176, 57, 202, 186, 111, 197, 175, 25, 136, 101, 184, 47, 62, 179, 125, 89, 242, 100, 83, 225, 21, 213, 40, 38, 125, 1, 4, 144, 23, 1, 128, 55, 119, 48, 179, 63, 67, 207, 232, 138, 20, 186, 54, 237, 201, 145, 213, 125, 103, 251, 46, 245, 212, 200, 66, 60, 185, 42, 113, 151, 43, 220, 38, 146, 246, 92, 206, 182, 204, 39, 88, 130, 35, 53, 5, 104, 226, 40, 55, 181, 196, 28, 36, 36, 66, 133, 22, 168, 114, 226, 134, 64, 86, 216, 156, 51, 106, 43, 179, 142, 231, 228, 206, 37, 202, 123, 183, 214, 209, 153, 45, 130, 220, 14, 36, 64, 216, 60, 16, 231, 124, 108, 148, 142, 121, 250, 188, 202, 23, 136, 61, 199, 55, 235, 8, 89, 215, 235, 140, 223, 61, 195, 249, 75, 134, 249, 1, 166, 103, 106, 112, 254, 13, 198, 50, 233, 86, 102, 75, 180, 31, 88, 231, 195, 162, 90, 11, 153, 235, 87, 136, 117, 195, 219, 27, 177, 224, 222, 3, 207, 224, 191, 112, 249, 11, 93, 24, 150, 210, 223, 249, 76, 152, 249, 62, 215, 104, 91, 30, 206, 51, 111, 185, 93, 206, 251, 150, 148, 35, 180, 51, 191, 190, 90, 46, 183, 202, 147, 196, 225, 39, 73, 242, 181, 82, 166, 127, 241, 138, 190, 29, 158, 217, 70, 13, 203, 63, 156, 225, 89, 121, 91, 79, 148, 165, 183, 76, 29, 166, 213, 150, 239, 47, 40, 13, 167, 89, 105, 173, 36, 17, 253, 98, 24, 66, 106, 29, 244, 66, 81, 163, 15, 124, 55, 212, 17, 202, 64, 50, 184, 178, 181, 121, 193, 55, 107, 180, 206, 217, 183, 56, 87, 46, 139, 245, 178, 123, 203, 146, 150, 225, 166, 180, 139, 142, 16, 142, 101, 27, 223, 214, 88, 134, 210, 107, 63, 242, 121, 169, 188, 191, 194, 121, 77, 155, 199, 85, 244, 161, 212, 214, 187, 214, 250, 109, 213, 89, 38, 38, 176, 51, 136, 187, 153, 174, 87, 89, 182, 159, 103, 251, 204, 140, 11, 139, 170, 206, 83, 54, 76, 19, 64, 207, 43, 170, 112, 154, 85, 232, 3, 100, 187, 129, 78, 227, 143, 203, 50, 12, 250, 137, 150, 130, 212, 14, 197, 128, 30, 77, 184, 233, 87, 214, 62, 79, 220, 34, 167, 169, 101, 197, 174, 173, 107, 158, 14, 204, 14, 225, 211, 226, 166, 1, 13, 23, 49, 83, 37, 91, 28, 45, 114, 236, 196, 57, 38, 11, 110, 33, 178, 114, 23, 12, 82, 238, 26, 226, 229, 128, 215, 232, 29, 54, 42, 122, 157, 61, 210, 129, 37, 71, 29, 113, 41, 160, 22, 234, 142, 218, 155, 55, 1, 254, 187, 31, 129, 151, 79, 41, 7, 169, 206, 108, 65, 120, 66, 34, 77, 143, 15, 212, 44, 18, 226, 204, 89, 82, 144, 102, 208, 66, 155, 100, 193, 7, 166, 105, 94, 94, 65, 146, 36, 74, 234, 207, 99, 11, 168, 92, 155, 28, 73, 194, 68, 131, 215, 26, 184, 137, 151, 43, 174, 160, 56, 198, 51, 101, 21, 229, 21, 108, 75, 72, 167, 126, 185, 230, 251, 139, 141, 211, 218, 189, 149, 180, 53, 26, 11, 29, 161, 247, 141, 26, 205, 34, 202, 254, 96, 243, 177, 166, 21, 134, 58, 213, 45, 95, 175, 108, 50, 207, 201, 217, 60, 23, 49, 14, 79, 68, 173, 68, 140, 52, 20, 5, 202, 195, 237, 165, 117, 118, 109, 11, 190, 235, 231, 212, 239, 89, 237, 31, 204, 243, 239, 251, 126, 254, 255, 179, 72, 149, 150, 7, 250, 180, 26, 123, 151, 167, 159, 121, 246, 175, 190, 140, 223, 63, 91, 167, 116, 141, 69, 62, 75, 234, 110, 211, 140, 224, 200, 224, 57, 56, 114, 224, 171, 51, 190, 63, 254, 186, 255, 55, 230, 135, 13, 116, 179, 192, 76, 221, 224, 187, 64, 201, 153, 211, 129, 194, 38, 47, 103, 109, 199, 255, 212, 255, 195, 121, 102, 111, 187, 106, 217, 63, 187, 201, 103, 205, 154, 11, 46, 108, 125, 28, 4, 107, 25, 235, 85, 123, 38, 70, 214, 172, 152, 40, 105, 49, 178, 8, 189, 229, 119, 213, 167, 139, 23, 84, 83, 136, 218, 205, 182, 136, 184, 254, 231, 31, 182, 152, 156, 178, 66, 154, 114, 211, 57, 206, 169, 109, 79, 98, 254, 231, 217, 242, 133, 78, 129, 98, 130, 77, 227, 112, 26, 151, 175, 175, 223, 175, 234, 100, 102, 248, 157, 193, 113, 158, 3, 223, 98, 7, 125, 126, 127, 200, 154, 161, 233, 207, 10, 176, 252, 4, 50, 195, 19, 78, 254, 224, 31, 60, 250, 147, 30, 207, 198, 63, 135, 14, 159, 208, 128, 202, 13, 95, 95, 231, 22, 253, 1, 253, 61, 177, 45, 210, 164, 244, 161, 171, 215, 248, 231, 86, 31, 181, 75, 128, 25, 231, 186, 32, 9, 229, 75, 159, 203, 233, 159, 107, 236, 215, 119, 246, 234, 147, 45, 101, 207, 6, 245, 52, 95, 226, 118, 188, 7, 245, 205, 250, 118, 177, 246, 151, 189, 250, 27, 109, 168, 185, 112, 93, 244, 52, 22, 240, 220, 171, 158, 24, 128, 84, 247, 167, 213, 153, 45, 199, 70, 71, 139, 246, 169, 68, 182, 156, 131, 239, 217, 27, 0, 129, 66, 165, 197, 233, 175, 39, 36, 241, 10, 120, 138, 215, 253, 52, 205, 168, 22, 18, 1, 43, 19, 28, 15, 119, 65, 139, 89, 127, 43, 243, 255, 21, 105, 242, 151, 147, 159, 24, 187, 229, 116, 100, 89, 218, 251, 116, 116, 232, 239, 191, 35, 237, 62, 47, 236, 191, 124, 61, 184, 212, 186, 91, 137, 109, 60, 21, 137, 243, 8, 181, 210, 76, 70, 154, 222, 90, 43, 84, 148, 153, 125, 129, 139, 217, 97, 218, 113, 3, 62, 23, 146, 48, 0, 39, 94, 3, 102, 53, 222, 225, 247, 217, 191, 153, 180, 234, 229, 111, 113, 50, 212, 160, 229, 107, 111, 244, 16, 244, 83, 187, 134, 31, 177, 170, 241, 47, 69, 54, 216, 85, 81, 192, 95, 62, 90, 119, 43, 181, 61, 255, 119, 119, 183, 47, 95, 30, 94, 111, 110, 174, 119, 251, 253, 101, 14, 103, 203, 108, 132, 203, 155, 67, 250, 201, 155, 124, 244, 25, 210, 223, 220, 108, 224, 146, 92, 94, 245, 222, 223, 221, 238, 174, 162, 154, 186, 14, 71, 253, 241, 182, 237, 240, 167, 43, 198, 62, 82, 250, 218, 245, 101, 149, 187, 166, 164, 167, 97, 118, 120, 177, 159, 245, 56, 174, 159, 24, 251, 78, 149, 123, 29, 66, 250, 40, 104, 13, 79, 244, 95, 238, 48, 53, 246, 152, 182, 172, 245, 104, 242, 247, 188, 148, 235, 221, 63, 64, 50, 18, 252, 37, 88, 162, 147, 81, 22, 91, 209, 165, 168, 223, 95, 167, 216, 120, 203, 142, 208, 39, 101, 198, 97, 174, 100, 37, 222, 83, 22, 17, 128, 0, 96, 252, 31, 156, 75, 17, 190, 187, 245, 157, 148, 127, 17, 30, 4, 44, 230, 190, 114, 241, 227, 26, 56, 246, 91, 7, 253, 248, 245, 255, 85, 171, 51, 27, 122, 47, 58, 213, 55, 0, 20, 96, 156, 1, 44, 141, 43, 27, 176, 161, 160, 101, 206, 106, 136, 164, 176, 35, 14, 169, 23, 39, 152, 34, 181, 175, 103, 99, 169, 139, 154, 95, 34, 197, 72, 212, 196, 242, 26, 69, 149, 110, 74, 237, 197, 181, 234, 13, 208, 172, 167, 74, 139, 188, 115, 92, 169, 7, 147, 238, 187, 160, 60, 122, 181, 226, 15, 47, 148, 26, 101, 13, 165, 153, 105, 33, 21, 209, 10, 90, 226, 201, 211, 116, 97, 222, 99, 158, 72, 58, 45, 213, 122, 255, 15, 136, 253, 240, 134, 132, 229, 41, 7, 146, 194, 153, 158, 152, 115, 24, 167, 170, 66, 73, 115, 210, 103, 22, 122, 140, 143, 32, 119, 93, 123, 166, 160, 38, 133, 197, 161, 85, 174, 100, 79, 42, 48, 203, 237, 99, 202, 89, 244, 232, 84, 143, 32, 199, 232, 214, 4, 48, 154, 224, 112, 50, 142, 159, 2, 100, 69, 234, 237, 88, 185, 51, 122, 163, 165, 64, 16, 203, 251, 54, 222, 196, 140, 106, 71, 163, 73, 108, 49, 142, 30, 54, 147, 214, 55, 245, 7, 4, 203, 132, 119, 146, 216, 60, 25, 235, 86, 239, 100, 237, 10, 89, 152, 163, 3, 226, 161, 70, 242, 180, 45, 183, 24, 38, 237, 136, 81, 180, 33, 68, 196, 159, 222, 38, 10, 168, 6, 72, 25, 224, 75, 14, 196, 32, 178, 240, 38, 92, 6, 27, 242, 215, 132, 75, 42, 90, 192, 50, 213, 49, 123, 148, 124, 218, 51, 245, 158, 132, 130, 73, 167, 76, 88, 54, 116, 254, 130, 68, 153, 160, 115, 161, 5, 16, 251, 8, 193, 244, 68, 44, 101, 105, 229, 1, 209, 179, 14, 175, 169, 47, 5, 216, 50, 149, 149, 178, 175, 218, 9, 160, 94, 87, 5, 7, 82, 181, 158, 87, 237, 164, 204, 116, 222, 76, 124, 236, 79, 18, 200, 111, 10, 241, 161, 232, 187, 150, 40, 237, 160, 168, 128, 26, 227, 220, 146, 250, 108, 19, 146, 114, 8, 9, 114, 33, 174, 38, 54, 249, 208, 18, 6, 21, 48, 190, 194, 153, 42, 108, 242, 155, 162, 52, 248, 10, 230, 105, 133, 78, 79, 238, 94, 132, 86, 128, 200, 161, 126, 169, 104, 59, 88, 196, 58, 3, 7, 45, 97, 28, 128, 210, 58, 82, 51, 148, 229, 250, 32, 1, 240, 200, 8, 65, 171, 208, 122, 144, 161, 43, 57, 160, 151, 105, 148, 173, 62, 232, 26, 180, 149, 17, 130, 230, 161, 46, 89, 2, 44, 201, 65, 71, 154, 224, 201, 157, 63, 151, 24, 97, 91, 240, 18, 250, 145, 124, 33, 17, 118, 91, 82, 113, 105, 177, 90, 5, 244, 10, 150, 0, 205, 74, 106, 4, 219, 64, 42, 241, 115, 139, 195, 190, 215, 108, 174, 129, 139, 22, 245, 93, 201, 56, 112, 225, 135, 243, 54, 88, 8, 218, 10, 210, 114, 157, 52, 154, 165, 241, 61, 148, 7, 59, 16, 20, 203, 212, 79, 237, 9, 22, 201, 8, 193, 186, 96, 31, 46, 130, 110, 160, 117, 63, 42, 8, 182, 7, 235, 1, 0, 120, 236, 15, 22, 228, 250, 19, 120, 31, 54, 181, 112, 33, 21, 173, 7, 237, 131, 254, 60, 181, 81, 142, 158, 88, 117, 49, 178, 46, 95, 177, 96, 15, 12, 239, 9, 61, 106, 179, 82, 107, 197, 59, 191, 4, 183, 108, 56, 229, 163, 232, 224, 81, 202, 251, 210, 126, 109, 154, 234, 227, 213, 204, 155, 196, 237, 30, 174, 150, 254, 152, 3, 221, 92, 58, 191, 230, 147, 125, 167, 231, 249, 162, 21, 187, 145, 0, 112, 139, 10, 181, 19, 32, 200, 119, 45, 81, 128, 126, 87, 87, 45, 10, 12, 114, 52, 151, 233, 98, 59, 10, 168, 115, 181, 14, 162, 141, 126, 156, 105, 103, 105, 101, 34, 179, 39, 196, 155, 73, 128, 94, 114, 84, 125, 172, 115, 146, 246, 196, 193, 26, 43, 166, 136, 109, 162, 97, 226, 174, 180, 82, 184, 173, 68, 110, 67, 58, 106, 103, 174, 165, 111, 83, 176, 102, 1, 197, 108, 245, 88, 54, 194, 119, 182, 231, 41, 94, 21, 179, 65, 64, 237, 23, 59, 155, 107, 236, 205, 42, 234, 180, 176, 220, 39, 241, 136, 99, 174, 139, 199, 160, 214, 122, 137, 16, 212, 94, 76, 25, 32, 49, 212, 11, 156, 65, 187, 219, 134, 3, 130, 53, 144, 154, 203, 224, 152, 15, 167, 102, 148, 140, 64, 94, 182, 199, 179, 7, 206, 152, 33, 4, 244, 8, 117, 21, 6, 172, 49, 183, 234, 130, 112, 4, 77, 73, 6, 214, 5, 0, 106, 27, 148, 39, 179, 118, 44, 203, 74, 127, 105, 206, 148, 237, 14, 66, 248, 233, 207, 156, 24, 233, 82, 93, 141, 134, 236, 75, 189, 195, 24, 116, 19, 91, 236, 159, 235, 122, 65, 48, 156, 88, 203, 65, 113, 17, 84, 26, 177, 1, 74, 55, 251, 27, 4, 51, 47, 74, 9, 22, 211, 219, 237, 209, 18, 147, 136, 117, 89, 44, 65, 192, 88, 240, 83, 218, 111, 114, 193, 50, 150, 187, 63, 234, 179, 217, 54, 200, 170, 54, 53, 216, 37, 28, 164, 117, 83, 163, 218, 179, 36, 244, 3, 228, 16, 243, 208, 235, 82, 140, 36, 125, 108, 247, 174, 26, 133, 96, 241, 193, 225, 112, 1, 217, 148, 216, 103, 151, 227, 140, 11, 121, 91, 164, 32, 109, 147, 53, 128, 43, 151, 245, 135, 133, 188, 111, 205, 2, 191, 238, 66, 210, 177, 20, 225, 240, 193, 118, 196, 242, 164, 90, 194, 159, 18, 40, 108, 170, 70, 234, 54, 120, 10, 109, 47, 182, 15, 171, 110, 135, 230, 244, 60, 25, 168, 51, 246, 212, 211, 66, 134, 65, 77, 72, 183, 1, 97, 181, 245, 251, 211, 211, 203, 140, 94, 115, 201, 91, 36, 216, 138, 143, 143, 102, 119, 232, 21, 250, 106, 231, 131, 160, 225, 52, 175, 92, 168, 14, 7, 123, 200, 212, 134, 35, 57, 144, 216, 207, 143, 211, 33, 204, 14, 76, 33, 129, 153, 123, 69, 91, 137, 137, 146, 62, 117, 162, 205, 96, 130, 93, 67, 109, 28, 28, 215, 21, 64, 76, 76, 232, 31, 243, 7, 136, 40, 143, 82, 84, 76, 19, 169, 228, 18, 145, 0, 88, 242, 190, 233, 157, 212, 77, 43, 244, 101, 206, 104, 52, 177, 222, 206, 55, 230, 97, 165, 175, 118, 80, 238, 84, 107, 128, 151, 70, 248, 234, 1, 134, 134, 96, 29, 226, 22, 65, 140, 147, 121, 181, 97, 126, 237, 157, 125, 110, 165, 126, 97, 67, 240, 250, 76, 101, 196, 156, 34, 244, 213, 74, 119, 118, 209, 6, 172, 199, 108, 228, 169, 191, 246, 198, 201, 88, 176, 98, 99, 84, 133, 163, 3, 116, 118, 134, 69, 71, 77, 13, 128, 50, 116, 176, 25, 225, 176, 89, 230, 158, 20, 114, 76, 30, 4, 52, 0, 206, 234, 206, 157, 111, 229, 221, 234, 159, 92, 224, 45, 18, 200, 131, 62, 253, 66, 180, 68, 248, 244, 8, 180, 169, 171, 236, 113, 207, 203, 18, 64, 43, 1, 191, 184, 161, 160, 54, 151, 193, 98, 181, 97, 166, 218, 92, 212, 185, 114, 197, 114, 140, 229, 209, 186, 48, 238, 192, 18, 237, 21, 156, 81, 27, 227, 115, 206, 110, 206, 191, 61, 30, 49, 119, 116, 108, 169, 51, 56, 243, 10, 157, 143, 144, 104, 16, 206, 168, 199, 113, 43, 213, 249, 37, 241, 45, 108, 198, 6, 178, 65, 142, 172, 5, 53, 2, 106, 99, 180, 146, 234, 172, 201, 109, 28, 93, 78, 189, 255, 102, 18, 89, 224, 48, 236, 16, 140, 84, 200, 82, 203, 204, 237, 186, 236, 42, 39, 100, 46, 151, 204, 129, 191, 76, 37, 98, 78, 201, 104, 198, 190, 88, 229, 33, 214, 56, 85, 8, 55, 38, 77, 224, 248, 9, 248, 35, 184, 103, 22, 177, 37, 39, 177, 100, 225, 76, 237, 14, 19, 143, 115, 38, 192, 155, 135, 16, 255, 172, 237, 11, 128, 62, 197, 50, 13, 150, 143, 24, 46, 174, 91, 42, 28, 130, 17, 57, 171, 215, 171, 68, 224, 151, 193, 73, 51, 82, 18, 46, 128, 52, 46, 72, 213, 1, 20, 204, 214, 130, 25, 51, 93, 170, 194, 222, 75, 162, 18, 44, 117, 176, 212, 39, 37, 169, 60, 73, 234, 66, 42, 138, 185, 122, 0, 45, 120, 124, 58, 130, 243, 40, 1, 250, 23, 244, 16, 232, 119, 96, 113, 190, 79, 184, 74, 210, 64, 95, 129, 190, 119, 210, 170, 110, 147, 178, 99, 216, 46, 111, 240, 53, 1, 218, 171, 98, 128, 199, 182, 58, 197, 161, 240, 220, 200, 252, 96, 25, 209, 101, 71, 150, 74, 214, 31, 167, 92, 184, 64, 176, 132, 16, 68, 188, 74, 163, 162, 45, 78, 236, 22, 169, 95, 144, 117, 136, 229, 70, 59, 102, 90, 229, 9, 193, 144, 143, 74, 84, 22, 115, 95, 132, 79, 18, 77, 182, 91, 49, 97, 230, 136, 102, 166, 145, 45, 85, 160, 202, 5, 191, 144, 59, 19, 24, 81, 96, 26, 177, 121, 118, 200, 221, 194, 144, 190, 144, 29, 210, 30, 206, 3, 216, 142, 14, 2, 214, 186, 128, 117, 37, 54, 213, 220, 117, 58, 71, 181, 62, 158, 181, 35, 176, 73, 200, 18, 177, 9, 137, 186, 89, 26, 43, 137, 21, 189, 41, 159, 227, 62, 207, 237, 120, 39, 100, 31, 193, 37, 144, 103, 139, 6, 26, 225, 174, 157, 190, 18, 103, 115, 255, 9, 225, 136, 208, 41, 32, 190, 54, 132, 191, 104, 173, 5, 69, 74, 146, 110, 226, 12, 94, 15, 231, 181, 129, 160, 60, 106, 183, 147, 46, 16, 128, 232, 228, 51, 102, 177, 16, 6, 160, 192, 67, 66, 17, 96, 24, 220, 3, 3, 4, 128, 205, 224, 68, 160, 25, 247, 56, 238, 113, 63, 208, 128, 64, 8, 134, 6, 20, 184, 176, 173, 1, 131, 56, 172, 67, 241, 212, 6, 6, 204, 166, 191, 129, 9, 65, 60, 108, 96, 65, 187, 177, 27, 8, 8, 181, 239, 27, 222, 130, 4, 187, 213, 192, 129, 34, 231, 250, 222, 70, 52, 54, 112, 65, 229, 151, 27, 120, 120, 198, 156, 177, 102, 192, 139, 99, 182, 181, 23, 108, 22, 220, 71, 252, 82, 226, 57, 144, 27, 207, 195, 106, 250, 152, 100, 129, 71, 189, 127, 214, 111, 86, 235, 225, 58, 243, 78, 74, 110, 57, 6, 234, 219, 101, 49, 51, 121, 10, 153, 79, 196, 122, 185, 200, 46, 31, 77, 214, 123, 21, 26, 154, 133, 40, 29, 155, 190, 237, 177, 126, 32, 37, 199, 49, 24, 162, 102, 189, 188, 244, 122, 245, 187, 246, 125, 187, 132, 144, 209, 155, 166, 231, 66, 123, 127, 99, 203, 7, 61, 204, 146, 192, 156, 169, 38, 60, 16, 68, 115, 117, 105, 36, 23, 88, 250, 250, 120, 212, 234, 79, 6, 32, 64, 68, 73, 246, 125, 134, 246, 136, 106, 166, 66, 32, 85, 29, 79, 34, 183, 38, 158, 85, 28, 1, 217, 201, 147, 189, 3, 37, 199, 71, 34, 132, 165, 244, 217, 195, 231, 27, 228, 65, 41, 200, 206, 72, 118, 104, 152, 207, 93, 209, 159, 229, 100, 121, 201, 183, 52, 133, 2, 248, 70, 91, 4, 30, 47, 227, 50, 95, 30, 194, 71, 163, 105, 208, 2, 196, 72, 59, 180, 5, 245, 198, 227, 16, 11, 178, 128, 149, 97, 8, 212, 35, 163, 113, 193, 162, 254, 164, 0, 14, 114, 114, 209, 140, 223, 102, 97, 51, 162, 21, 255, 116, 74, 109, 193, 221, 199, 90, 185, 3, 181, 207, 22, 99, 197, 193, 238, 144, 86, 22, 152, 35, 95, 23, 124, 229, 180, 146, 49, 10, 139, 175, 163, 245, 232, 129, 206, 177, 41, 24, 10, 40, 96, 115, 4, 236, 15, 4, 120, 0, 27, 166, 74, 227, 227, 94, 191, 113, 30, 51, 240, 196, 11, 114, 122, 115, 179, 35, 192, 15, 127, 2, 8, 36, 136, 96, 66, 16, 242, 46, 34, 66, 153, 203, 123, 136, 13, 131, 112, 230, 33, 49, 227, 223, 143, 162, 136, 38, 134, 88, 226, 136, 39, 129, 68, 146, 72, 38, 133, 84, 210, 72, 231, 125, 62, 64, 74, 6, 50, 62, 36, 147, 249, 80, 100, 33, 39, 27, 5, 57, 40, 201, 37, 143, 124, 104, 10, 80, 177, 128, 66, 22, 162, 230, 31, 104, 88, 68, 17, 197, 148, 240, 17, 165, 148, 241, 45, 135, 216, 76, 29, 167, 105, 230, 33, 91, 248, 28, 11, 95, 114, 152, 118, 195, 225, 51, 99, 192, 38, 118, 241, 2, 94, 66, 35, 95, 176, 149, 11, 252, 206, 115, 104, 163, 147, 255, 194, 43, 24, 135, 131, 124, 71, 15, 87, 248, 30, 45, 31, 179, 3, 29, 46, 62, 225, 42, 215, 140, 137, 176, 16, 2, 241, 128, 71, 232, 25, 164, 159, 1, 126, 96, 49, 99, 208, 196, 45, 110, 112, 19, 3, 79, 248, 139, 91, 128, 84, 254, 126, 1, 74, 74, 125, 92, 42, 40, 36, 88, 9, 255, 51, 228, 73, 248, 211, 136, 111, 158, 69, 69, 70, 199, 198, 116, 43, 131, 124, 30, 39, 222, 137, 51, 61, 109, 140, 117, 92, 175, 49, 149, 75, 161, 210, 154, 6, 145, 193, 244, 217, 103, 115, 184, 60, 190, 64, 40, 18, 75, 164, 189, 246, 191, 64, 174, 80, 170, 212, 26, 173, 206, 210, 202, 218, 198, 214, 142, 212, 119, 187, 24, 135, 142, 28, 59, 113, 234, 204, 185, 11, 151, 174, 92, 187, 1, 0, 251, 106, 183, 12, 48, 4, 10, 131, 35, 144, 40, 52, 6, 139, 195, 19, 106, 209, 154, 72, 34, 83, 168, 52, 58, 131, 201, 234, 175, 73, 247, 236, 87, 196, 225, 242, 248, 2, 161, 72, 44, 145, 202, 228, 10, 165, 74, 173, 209, 234, 244, 134, 122, 27, 77, 102, 75, 7, 14, 171, 172, 186, 173, 157, 189, 131, 163, 147, 179, 75, 159, 237, 88, 179, 110, 195, 166, 109, 171, 190, 84, 235, 230, 238, 225, 233, 229, 237, 227, 235, 231, 111, 36, 0, 16, 4, 134, 64, 97, 112, 4, 18, 133, 198, 96, 113, 120, 2, 113, 130, 112, 95, 140, 206, 248, 127, 221, 243, 248, 2, 161, 72, 44, 145, 202, 228, 10, 165, 74, 173, 113, 76, 116, 114, 118, 113, 117, 115, 247, 240, 244, 34, 16, 73, 100, 10, 149, 70, 103, 48, 89, 108, 14, 151, 199, 23, 8, 69, 98, 137, 84, 38, 87, 40, 85, 106, 141, 86, 7, 168, 55, 24, 77, 102, 139, 213, 102, 119, 56, 93, 110, 143, 63, 68, 152, 80, 198, 133, 84, 218, 51, 190, 157, 118, 130, 32, 74, 178, 162, 106, 186, 97, 90, 182, 227, 86, 170, 181, 122, 163, 217, 106, 119, 186, 189, 254, 96, 56, 26, 79, 166, 179, 249, 98, 185, 90, 111, 182, 59, 109, 218, 183, 174, 224, 117, 25, 243, 143, 14, 157, 198, 73, 48, 66, 178, 6, 239, 252, 123, 107, 192, 224, 190, 190, 3, 191, 206, 131, 135, 143, 30, 63, 241, 210, 155, 195, 103, 207, 95, 188, 132, 85, 171, 80, 129, 115, 170, 160, 21, 169, 145, 37, 71, 174, 183, 103, 175, 223, 0, 32, 4, 35, 40, 134, 19, 36, 69, 51, 44, 199, 11, 162, 36, 43, 170, 166, 27, 166, 101, 59, 174, 231, 7, 97, 20, 39, 105, 150, 23, 101, 85, 55, 109, 215, 15, 227, 52, 47, 235, 118, 183, 63, 28, 79, 231, 203, 245, 182, 88, 174, 214, 155, 237, 110, 127, 0, 64, 8, 70, 80, 12, 39, 72, 138, 102, 88, 142, 23, 68, 73, 86, 84, 77, 55, 76, 203, 118, 92, 207, 15, 194, 40, 78, 210, 44, 47, 202, 170, 110, 142, 167, 243, 229, 122, 187, 63, 158, 47, 2, 145, 68, 166, 80, 105, 116, 6, 147, 197, 230, 112, 121, 124, 129, 80, 36, 150, 72, 101, 114, 133, 82, 165, 214, 104, 117, 128, 122, 131, 209, 100, 182, 88, 109, 118, 135, 211, 229, 246, 248, 35, 177, 168, 121, 100, 245, 155, 255, 152, 23, 57, 34, 98, 18, 242, 164, 20, 200, 40, 82, 162, 76, 133, 42, 53, 234, 138, 170, 233, 134, 105, 217, 142, 235, 249, 65, 24, 197, 73, 154, 229, 69, 89, 213, 77, 219, 45, 87, 70, 92, 111, 182, 59, 217, 31, 28, 30, 29, 159, 156, 158, 157, 95, 92, 94, 93, 223, 0, 32, 4, 35, 40, 134, 19, 36, 69, 51, 44, 199, 11, 162, 36, 43, 170, 166, 27, 166, 101, 59, 174, 231, 7, 97, 20, 39, 105, 150, 23, 101, 85, 55, 109, 215, 15, 227, 52, 47, 235, 118, 183, 63, 28, 79, 231, 203, 245, 118, 252, 9, 163, 78, 156, 124, 96, 44, 227, 204, 169, 3, 166, 77, 100, 176, 235, 188, 243, 39, 239, 55, 155, 133, 191, 190, 232, 226, 75, 126, 35, 236, 231, 237, 227, 187, 118, 217, 229, 87, 152, 176, 174, 186, 250, 154, 107, 175, 155, 108, 95, 188, 113, 107, 210, 180, 9, 44, 150, 131, 96, 33, 63, 86, 2, 89, 61, 61, 157, 214, 59, 119, 168, 252, 161, 116, 244, 128, 205, 242, 22, 190, 202, 253, 188, 15, 74, 182, 85, 202, 237, 215, 224, 79, 122, 148, 255, 211, 105, 195, 211, 143, 187, 128, 84, 217, 31, 224, 14, 201, 74, 254, 248, 239, 6, 18, 17, 242, 155, 232, 63, 230, 236, 25, 34, 122, 176, 90, 90, 77, 122, 145, 52, 220, 141, 216, 29, 229, 136, 197, 161, 173, 209, 142, 12, 107, 132, 95, 234, 184, 199, 242, 126, 14, 121, 102, 169, 245, 88, 147, 149, 14, 223, 204, 160, 217, 67, 134, 250, 230, 176, 110, 213, 240, 231, 228, 41, 208, 99, 108, 85, 156, 66, 150, 90, 112, 98, 135, 30, 142, 218, 211, 9, 125, 52, 155, 56, 81, 182, 200, 167, 191, 145, 17, 127, 215, 81, 102, 71, 71, 237, 153, 226, 163, 249, 150, 243, 67, 230, 136, 191, 116, 153, 192, 85, 109, 42, 98, 136, 226, 88, 100, 131, 10, 240, 210, 101, 69, 96, 130, 243, 16, 201, 112, 140, 193, 57, 115, 224, 161, 203, 151, 224, 220, 48, 35, 8, 194, 195, 31, 13, 68, 103, 195, 211, 249, 168, 238, 54, 142, 206, 96, 184, 63, 138, 59, 186, 40, 254, 95, 61, 170, 9, 198, 141, 14, 113, 56, 212, 247, 18, 199, 233, 195, 193, 205, 16, 249, 48, 220, 141, 98, 153, 204, 208, 99, 74, 195, 178, 146, 86, 36, 167, 144, 231, 246, 187, 122, 55, 25, 103, 201, 111, 198, 50, 11, 15, 178, 8, 249, 165, 160, 172, 201, 86, 113, 6, 245, 208, 101, 124, 235, 206, 238, 248, 159, 173, 107, 101, 91, 157, 10, 246, 88, 114, 97, 83, 41, 43, 134, 75, 152, 30, 171, 108, 216, 177, 173, 46, 231, 73, 91, 169, 215, 28, 41, 215, 112, 119, 163, 186, 249, 198, 57, 108, 58, 132, 195, 5, 53, 213, 89, 224, 6, 240, 22, 52, 166, 186, 11, 224, 93, 118, 77, 165, 21, 88, 80, 163, 102, 133, 159, 164, 147, 151, 225, 43, 116, 242, 118, 226, 211, 227, 189, 102, 124, 71, 230, 110, 152, 237, 47, 78, 26, 246, 241, 49, 94, 140, 207, 137, 127, 253, 2, 58, 86, 35, 255, 224, 159, 71, 116, 187, 205, 108, 43, 75, 25, 50, 20, 180, 224, 99, 42, 195, 98, 17, 226, 172, 47, 10, 174, 119, 96, 208, 49, 251, 169, 141, 119, 129, 70, 251, 19, 217, 222, 102, 149, 240, 97, 234, 201, 246, 129, 247, 53, 117, 112, 184, 228, 2, 21, 128, 31, 255, 144, 179, 25, 213, 139, 212, 81, 110, 222, 40, 77, 35, 202, 138, 231, 220, 93, 149, 46, 155, 1, 29, 237, 75, 119, 23, 156, 80, 215, 73, 15, 92, 123, 77, 121, 47, 237, 71, 247, 79, 84, 72, 5, 106, 158, 104, 245, 8, 101, 127, 83, 136, 208, 56, 10, 198, 168, 139, 83, 9, 18, 8, 82, 8, 174, 130, 216, 252, 6, 65, 46, 194, 146, 15, 80, 137, 162, 147, 176, 70, 27, 49, 43, 135, 57, 111, 168, 221, 44, 243, 247, 252, 91, 198, 39, 111, 212, 169, 14, 234, 93, 223, 148, 143, 17, 147, 191, 56, 194, 151, 152, 94, 18, 75, 247, 180, 88, 60, 110, 239, 177, 122, 182, 64, 244, 32, 22, 97, 130, 152, 11, 162, 55, 244, 53, 148, 220, 110, 36, 58, 232, 207, 19, 131, 156, 240, 27, 110, 5, 18, 130, 183, 32, 85, 235, 237, 208, 156, 57, 218, 229, 51, 216, 122, 141, 179, 96, 38, 131, 179, 233, 46, 168, 239, 196, 26, 183, 224, 247, 174, 167, 123, 137, 85, 19, 43, 112, 169, 212, 31, 141, 254, 170, 74, 145, 103, 0, 226, 64, 67, 17, 225, 186, 124, 155, 232, 229, 29, 6, 35, 203, 244, 210, 81, 100, 217, 48, 128, 41, 53, 81, 180, 181, 15, 201, 32, 68, 41, 181, 133, 8, 101, 195, 2, 8, 97, 156, 114, 27, 60, 44, 133, 49, 198, 152, 16, 66, 8, 33, 132, 144, 165, 101, 50, 198, 216, 209, 1, 17, 38, 148, 113, 145, 101, 35, 0, 34, 76, 40, 227, 98, 136, 82, 74, 41, 165, 148, 63, 78, 54, 128, 246, 49, 12, 64, 132, 9, 101, 92, 12, 17, 222, 112, 111, 40, 92, 3, 174, 183, 203, 47, 144, 59, 124, 29, 206, 46, 163, 39, 126, 29, 244, 229, 99, 224, 160, 95, 110, 135, 183, 55, 212, 199, 249, 28, 34, 29, 252, 28, 109, 198, 55, 144, 233, 150, 180, 145, 198, 173, 219, 81, 79, 49, 169, 207, 40, 197, 185, 126, 186, 184, 183, 157, 68, 175, 38, 173, 116, 237, 69, 45, 103, 41, 202, 93, 243, 43, 5, 223, 254, 208, 75, 175, 131, 29, 86, 199, 104, 252, 241, 76, 186, 228, 129, 233, 200, 39, 88, 233, 211, 238, 127, 54, 180, 146, 217, 222, 126, 134, 37, 239, 159, 191, 184, 45, 46, 118, 161, 176, 131, 195, 251, 6, 42, 174, 225, 99, 115, 237, 255, 251, 233, 217, 191, 254, 242, 13, 127, 230, 191, 65, 188, 147, 140, 249, 186, 34, 106, 221, 137, 207, 176, 190, 253, 178, 144, 218, 68, 38, 67, 31, 125, 167, 231, 15, 249, 32, 227, 221, 7, 205, 159, 153, 230, 185, 126, 218, 71, 225, 132, 242, 112, 205, 90, 113, 94, 57, 142, 157, 253, 140, 167, 105, 191, 249, 17, 41, 122, 96, 12, 51, 45, 21, 254, 63, 196, 127, 46, 34, 76, 40, 227, 66, 58, 221, 157, 118, 118, 231, 71, 21, 116, 61, 1, 46, 108, 233, 214, 200, 141, 168, 179, 29, 14, 79, 108, 2, 244, 248, 94, 161, 253, 210, 242, 39, 50, 189, 210, 251, 239, 255, 243, 169, 21, 197, 238, 87, 94, 51, 254, 251, 223, 175, 87, 117, 211, 55, 29, 28, 11, 174, 196, 7, 7, 239, 252, 242, 209, 243, 247, 247, 239, 221, 97, 247, 67, 15, 143, 103, 73, 94, 253, 232, 210, 48, 109, 236, 8, 16, 97, 66, 25, 23, 210, 113, 149, 54, 177, 233, 0, 17, 38, 148, 113, 33, 29, 87, 105, 19, 155, 1, 16, 97, 66, 153, 144, 142, 171, 180, 137, 205, 36, 76, 40, 227, 66, 58, 174, 210, 38, 54, 15, 64, 132, 9, 101, 92, 72, 199, 85, 218, 196, 230, 5, 136, 48, 161, 140, 11, 233, 184, 74, 155, 205, 126, 121, 21, 124, 42, 61, 134, 10, 17, 97, 66, 25, 23, 210, 113, 149, 30, 230, 203, 223, 114, 248, 52, 0, 68, 152, 80, 198, 133, 116, 92, 165, 77, 108, 14, 64, 132, 9, 101, 92, 72, 199, 85, 218, 196, 230, 2, 68, 152, 80, 198, 133, 116, 92, 165, 77, 191, 163, 2, 64, 132, 9, 101, 92, 72, 199, 85, 218, 196, 38, 2, 68, 23, 30, 19, 159, 3, 0, 17, 38, 148, 113, 33, 29, 87, 105, 19, 155, 23, 32, 194, 132, 50, 46, 164, 227, 42, 109, 98, 179, 0, 34, 76, 40, 27, 252, 75, 133, 229, 214, 80, 101, 108, 255, 156, 248, 40, 165, 148, 214, 90, 107, 173, 171, 229, 208, 90, 107, 173, 181, 54, 198, 24, 99, 76, 13, 15, 99, 140, 49, 198, 24, 219, 236, 209, 39, 148, 113, 65, 152, 216, 86, 137, 241, 240, 45, 12, 219, 124, 173, 103, 210, 57, 248, 152, 254, 255, 151, 77, 158, 3, 8, 141, 209, 71, 89, 0, 206, 236, 150, 31, 72, 41, 140, 28, 179, 131, 202, 75, 180, 211, 109, 101, 142, 41, 18, 229, 136, 92, 182, 138, 2, 1, 113, 65, 14, 254, 101, 103, 23, 72, 167, 55, 216, 55, 57, 119, 168, 82, 127, 236, 236, 215, 117, 71, 14, 239, 78, 252, 51, 200, 106, 45, 180, 149, 137, 164, 52, 13, 248, 29, 156, 60, 147, 169, 117, 96, 27, 62, 180, 22, 236, 98, 50, 220, 119, 90, 238, 226, 137, 125, 103, 209, 189, 133, 20, 4, 182, 144, 147, 253, 175, 22, 162, 234, 212, 158, 61, 239, 50, 29, 95, 75, 183, 188, 115, 247, 174, 125, 7, 15, 110, 215, 157, 76, 9, 213, 19, 142, 229, 128, 9, 119, 125, 89, 63, 161, 92, 181, 142, 228, 133, 148, 5, 130, 219, 181, 41, 86, 78, 224, 101, 59, 145, 166, 67, 101, 103, 59, 79, 76, 117, 186, 24, 39, 165, 85, 25, 67, 70, 102, 103, 1, 35, 35, 236, 191, 249, 213, 208, 72, 229, 103, 172, 145, 123, 139, 170, 244, 22, 230, 147, 161, 2, 17, 74, 241, 202, 242, 239, 65, 33, 56, 85, 161, 214, 40, 108, 208, 218, 232, 157, 155, 157, 246, 206, 182, 220, 222, 208, 12, 161, 4, 3, 178, 119, 131, 245, 255, 72, 85, 193, 244, 104, 241, 214, 155, 51, 123, 173, 113, 86, 222, 162, 168, 17, 84, 81, 241, 232, 43, 4, 61, 27, 90, 65, 215, 28, 244, 69, 247, 199, 238, 111, 93, 244, 69, 7, 145, 91, 22, 111, 59, 254, 155, 118, 90, 136, 95, 166, 149, 141, 252, 180, 226, 224, 237, 10, 137, 224, 10, 193, 227, 202, 27, 28, 188, 56, 130, 227, 191, 226, 139, 107, 166, 16, 160, 32, 60, 80, 142, 128, 43, 96, 141, 252, 53, 2, 32, 87, 143, 32, 106, 228, 19, 250, 52, 83, 73, 44, 219, 251, 68, 251, 255, 34, 181, 142, 205, 143, 215, 145, 187, 40, 44, 120, 106, 190, 47, 140, 214, 53, 244, 203, 131, 50, 26, 175, 60, 71, 144, 199, 250, 253, 168, 17, 106, 158, 222, 58, 87, 176, 178, 14, 5, 195, 68, 119, 157, 74, 8, 158, 59, 160, 54, 60, 113, 130, 101, 183, 156, 56, 121, 146, 253, 198, 54, 121, 2, 44, 72, 69, 152, 30, 184, 182, 0) +font_name = "Open Sans" +style_name = "SemiBold" +font_weight = 600 +cache/0/16/0/ascent = 18.0 +cache/0/16/0/descent = 5.0 +cache/0/16/0/underline_position = 1.60938 +cache/0/16/0/underline_thickness = 0.796875 +cache/0/16/0/scale = 1.0 +cache/0/16/0/textures/0/offsets = PackedInt32Array(253, 0, 3, 16, 253, 16, 3, 13, 255, 29, 1, 18, 253, 47, 3, 16, 255, 63, 1, 19, 248, 82, 8, 20, 111, 102, 145, 13, 104, 115, 152, 16, 9, 131, 247, 19) +cache/0/16/0/textures/0/image = SubResource("Image_4lhx8") +cache/0/16/0/glyphs/39/advance = Vector2(11.75, 16.0938) +cache/0/16/0/glyphs/39/offset = Vector2(0, -13) +cache/0/16/0/glyphs/39/size = Vector2(12, 14) +cache/0/16/0/glyphs/39/uv_rect = Rect2(1, 1, 12, 14) +cache/0/16/0/glyphs/39/texture_idx = 0 +cache/0/16/0/glyphs/82/advance = Vector2(9.78125, 16.0938) +cache/0/16/0/glyphs/82/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/82/size = Vector2(11, 11) +cache/0/16/0/glyphs/82/uv_rect = Rect2(15, 1, 11, 11) +cache/0/16/0/glyphs/82/texture_idx = 0 +cache/0/16/0/glyphs/70/advance = Vector2(7.92188, 16.0938) +cache/0/16/0/glyphs/70/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/70/size = Vector2(10, 11) +cache/0/16/0/glyphs/70/uv_rect = Rect2(28, 1, 10, 11) +cache/0/16/0/glyphs/70/texture_idx = 0 +cache/0/16/0/glyphs/78/advance = Vector2(9.15625, 16.0938) +cache/0/16/0/glyphs/78/offset = Vector2(0, -13) +cache/0/16/0/glyphs/78/size = Vector2(11, 14) +cache/0/16/0/glyphs/78/uv_rect = Rect2(40, 1, 11, 14) +cache/0/16/0/glyphs/78/texture_idx = 0 +cache/0/16/0/glyphs/3/advance = Vector2(4.15625, 16.0938) +cache/0/16/0/glyphs/3/offset = Vector2(-1, -1) +cache/0/16/0/glyphs/3/size = Vector2(2, 2) +cache/0/16/0/glyphs/3/uv_rect = Rect2(53, 1, 2, 2) +cache/0/16/0/glyphs/3/texture_idx = 0 +cache/0/16/0/glyphs/51/advance = Vector2(9.84375, 16.0938) +cache/0/16/0/glyphs/51/offset = Vector2(0, -13) +cache/0/16/0/glyphs/51/size = Vector2(11, 14) +cache/0/16/0/glyphs/51/uv_rect = Rect2(57, 1, 11, 14) +cache/0/16/0/glyphs/51/texture_idx = 0 +cache/0/16/0/glyphs/86/advance = Vector2(7.79688, 16.0938) +cache/0/16/0/glyphs/86/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/86/size = Vector2(10, 11) +cache/0/16/0/glyphs/86/uv_rect = Rect2(70, 1, 10, 11) +cache/0/16/0/glyphs/86/texture_idx = 0 +cache/0/16/0/glyphs/76/advance = Vector2(4.46875, 16.0938) +cache/0/16/0/glyphs/76/offset = Vector2(0, -13) +cache/0/16/0/glyphs/76/size = Vector2(5, 14) +cache/0/16/0/glyphs/76/uv_rect = Rect2(82, 1, 5, 14) +cache/0/16/0/glyphs/76/texture_idx = 0 +cache/0/16/0/glyphs/87/advance = Vector2(6.29688, 16.0938) +cache/0/16/0/glyphs/87/offset = Vector2(-1, -12) +cache/0/16/0/glyphs/87/size = Vector2(8, 13) +cache/0/16/0/glyphs/87/uv_rect = Rect2(89, 1, 8, 13) +cache/0/16/0/glyphs/87/texture_idx = 0 +cache/0/16/0/glyphs/81/advance = Vector2(10.1563, 16.0938) +cache/0/16/0/glyphs/81/offset = Vector2(0, -10) +cache/0/16/0/glyphs/81/size = Vector2(10, 11) +cache/0/16/0/glyphs/81/uv_rect = Rect2(99, 1, 10, 11) +cache/0/16/0/glyphs/81/texture_idx = 0 +cache/0/16/0/glyphs/88/advance = Vector2(10.1563, 16.0938) +cache/0/16/0/glyphs/88/offset = Vector2(0, -10) +cache/0/16/0/glyphs/88/size = Vector2(10, 11) +cache/0/16/0/glyphs/88/uv_rect = Rect2(111, 1, 10, 11) +cache/0/16/0/glyphs/88/texture_idx = 0 +cache/0/16/0/glyphs/68/advance = Vector2(9.28125, 16.0938) +cache/0/16/0/glyphs/68/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/68/size = Vector2(11, 11) +cache/0/16/0/glyphs/68/uv_rect = Rect2(123, 1, 11, 11) +cache/0/16/0/glyphs/68/texture_idx = 0 +cache/0/16/0/glyphs/89/advance = Vector2(8.5625, 16.0938) +cache/0/16/0/glyphs/89/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/89/size = Vector2(11, 11) +cache/0/16/0/glyphs/89/uv_rect = Rect2(136, 1, 11, 11) +cache/0/16/0/glyphs/89/texture_idx = 0 +cache/0/16/0/glyphs/72/advance = Vector2(9.21875, 16.0938) +cache/0/16/0/glyphs/72/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/72/size = Vector2(11, 11) +cache/0/16/0/glyphs/72/uv_rect = Rect2(149, 1, 11, 11) +cache/0/16/0/glyphs/72/texture_idx = 0 +cache/0/16/0/glyphs/71/advance = Vector2(9.96875, 16.0938) +cache/0/16/0/glyphs/71/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/71/size = Vector2(11, 14) +cache/0/16/0/glyphs/71/uv_rect = Rect2(162, 1, 11, 14) +cache/0/16/0/glyphs/71/texture_idx = 0 +cache/0/16/0/glyphs/50/advance = Vector2(12.5938, 16.0938) +cache/0/16/0/glyphs/50/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/50/size = Vector2(14, 14) +cache/0/16/0/glyphs/50/uv_rect = Rect2(175, 1, 14, 14) +cache/0/16/0/glyphs/50/texture_idx = 0 +cache/0/16/0/glyphs/46/advance = Vector2(10.2344, 16.0938) +cache/0/16/0/glyphs/46/offset = Vector2(0, -13) +cache/0/16/0/glyphs/46/size = Vector2(12, 14) +cache/0/16/0/glyphs/46/uv_rect = Rect2(191, 1, 12, 14) +cache/0/16/0/glyphs/46/texture_idx = 0 +cache/0/16/0/glyphs/41/advance = Vector2(8.51563, 16.0938) +cache/0/16/0/glyphs/41/offset = Vector2(0, -13) +cache/0/16/0/glyphs/41/size = Vector2(9, 14) +cache/0/16/0/glyphs/41/uv_rect = Rect2(205, 1, 9, 14) +cache/0/16/0/glyphs/41/texture_idx = 0 +cache/0/16/0/glyphs/79/advance = Vector2(4.46875, 16.0938) +cache/0/16/0/glyphs/79/offset = Vector2(0, -13) +cache/0/16/0/glyphs/79/size = Vector2(5, 14) +cache/0/16/0/glyphs/79/uv_rect = Rect2(216, 1, 5, 14) +cache/0/16/0/glyphs/79/texture_idx = 0 +cache/0/16/0/glyphs/85/advance = Vector2(6.90625, 16.0938) +cache/0/16/0/glyphs/85/offset = Vector2(0, -10) +cache/0/16/0/glyphs/85/size = Vector2(8, 11) +cache/0/16/0/glyphs/85/uv_rect = Rect2(223, 1, 8, 11) +cache/0/16/0/glyphs/85/texture_idx = 0 +cache/0/16/0/glyphs/38/advance = Vector2(10.1406, 16.0938) +cache/0/16/0/glyphs/38/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/38/size = Vector2(12, 14) +cache/0/16/0/glyphs/38/uv_rect = Rect2(233, 1, 12, 14) +cache/0/16/0/glyphs/38/texture_idx = 0 +cache/0/16/0/glyphs/80/advance = Vector2(15.2969, 16.0938) +cache/0/16/0/glyphs/80/offset = Vector2(0, -10) +cache/0/16/0/glyphs/80/size = Vector2(16, 11) +cache/0/16/0/glyphs/80/uv_rect = Rect2(1, 17, 16, 11) +cache/0/16/0/glyphs/80/texture_idx = 0 +cache/0/16/0/glyphs/35/advance = Vector2(14.375, 16.0938) +cache/0/16/0/glyphs/35/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/35/size = Vector2(16, 16) +cache/0/16/0/glyphs/35/uv_rect = Rect2(1, 30, 16, 16) +cache/0/16/0/glyphs/35/texture_idx = 0 +cache/0/16/0/glyphs/40/advance = Vector2(8.9375, 16.0938) +cache/0/16/0/glyphs/40/offset = Vector2(0, -13) +cache/0/16/0/glyphs/40/size = Vector2(9, 14) +cache/0/16/0/glyphs/40/uv_rect = Rect2(19, 30, 9, 14) +cache/0/16/0/glyphs/40/texture_idx = 0 +cache/0/16/0/glyphs/918/advance = Vector2(4.89063, 16.0938) +cache/0/16/0/glyphs/918/offset = Vector2(0, -13) +cache/0/16/0/glyphs/918/size = Vector2(5, 14) +cache/0/16/0/glyphs/918/uv_rect = Rect2(247, 1, 5, 14) +cache/0/16/0/glyphs/918/texture_idx = 0 +cache/0/16/0/glyphs/83/advance = Vector2(9.96875, 16.0938) +cache/0/16/0/glyphs/83/offset = Vector2(0, -10) +cache/0/16/0/glyphs/83/size = Vector2(11, 15) +cache/0/16/0/glyphs/83/uv_rect = Rect2(30, 30, 11, 15) +cache/0/16/0/glyphs/83/texture_idx = 0 +cache/0/16/0/glyphs/20/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/20/offset = Vector2(0, -13) +cache/0/16/0/glyphs/20/size = Vector2(8, 14) +cache/0/16/0/glyphs/20/uv_rect = Rect2(43, 30, 8, 14) +cache/0/16/0/glyphs/20/texture_idx = 0 +cache/0/16/0/glyphs/25/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/25/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/25/size = Vector2(11, 14) +cache/0/16/0/glyphs/25/uv_rect = Rect2(53, 30, 11, 14) +cache/0/16/0/glyphs/25/texture_idx = 0 +cache/0/16/0/glyphs/57/advance = Vector2(9.95313, 16.0938) +cache/0/16/0/glyphs/57/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/57/size = Vector2(12, 14) +cache/0/16/0/glyphs/57/uv_rect = Rect2(66, 30, 12, 14) +cache/0/16/0/glyphs/57/texture_idx = 0 +cache/0/16/0/glyphs/37/advance = Vector2(10.5625, 16.0938) +cache/0/16/0/glyphs/37/offset = Vector2(0, -13) +cache/0/16/0/glyphs/37/size = Vector2(11, 14) +cache/0/16/0/glyphs/37/uv_rect = Rect2(80, 30, 11, 14) +cache/0/16/0/glyphs/37/texture_idx = 0 +cache/0/16/0/glyphs/91/advance = Vector2(8.8125, 16.0938) +cache/0/16/0/glyphs/91/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/91/size = Vector2(11, 11) +cache/0/16/0/glyphs/91/uv_rect = Rect2(19, 17, 11, 11) +cache/0/16/0/glyphs/91/texture_idx = 0 +cache/0/16/0/glyphs/26/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/26/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/26/size = Vector2(11, 14) +cache/0/16/0/glyphs/26/uv_rect = Rect2(93, 30, 11, 14) +cache/0/16/0/glyphs/26/texture_idx = 0 +cache/0/16/0/glyphs/92/advance = Vector2(8.57813, 16.0938) +cache/0/16/0/glyphs/92/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/92/size = Vector2(11, 15) +cache/0/16/0/glyphs/92/uv_rect = Rect2(106, 30, 11, 15) +cache/0/16/0/glyphs/92/texture_idx = 0 +cache/0/16/0/glyphs/29/advance = Vector2(4.40625, 16.0938) +cache/0/16/0/glyphs/29/offset = Vector2(0, -10) +cache/0/16/0/glyphs/29/size = Vector2(5, 11) +cache/0/16/0/glyphs/29/uv_rect = Rect2(32, 17, 5, 11) +cache/0/16/0/glyphs/29/texture_idx = 0 +cache/0/16/0/glyphs/18/advance = Vector2(6.25, 16.0938) +cache/0/16/0/glyphs/18/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/18/size = Vector2(9, 14) +cache/0/16/0/glyphs/18/uv_rect = Rect2(119, 30, 9, 14) +cache/0/16/0/glyphs/18/texture_idx = 0 +cache/0/16/0/glyphs/66/advance = Vector2(6.875, 16.0938) +cache/0/16/0/glyphs/66/offset = Vector2(-2, 0) +cache/0/16/0/glyphs/66/size = Vector2(10, 4) +cache/0/16/0/glyphs/66/uv_rect = Rect2(39, 17, 10, 4) +cache/0/16/0/glyphs/66/texture_idx = 0 +cache/0/16/0/glyphs/74/advance = Vector2(8.90625, 16.0938) +cache/0/16/0/glyphs/74/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/74/size = Vector2(11, 15) +cache/0/16/0/glyphs/74/uv_rect = Rect2(130, 30, 11, 15) +cache/0/16/0/glyphs/74/texture_idx = 0 +cache/0/16/0/glyphs/75/advance = Vector2(10.1563, 16.0938) +cache/0/16/0/glyphs/75/offset = Vector2(0, -13) +cache/0/16/0/glyphs/75/size = Vector2(10, 14) +cache/0/16/0/glyphs/75/uv_rect = Rect2(143, 30, 10, 14) +cache/0/16/0/glyphs/75/texture_idx = 0 +cache/0/16/0/glyphs/47/advance = Vector2(8.67188, 16.0938) +cache/0/16/0/glyphs/47/offset = Vector2(0, -13) +cache/0/16/0/glyphs/47/size = Vector2(10, 14) +cache/0/16/0/glyphs/47/uv_rect = Rect2(155, 30, 10, 14) +cache/0/16/0/glyphs/47/texture_idx = 0 +cache/0/16/0/glyphs/73/advance = Vector2(5.8125, 16.0938) +cache/0/16/0/glyphs/73/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/73/size = Vector2(9, 14) +cache/0/16/0/glyphs/73/uv_rect = Rect2(167, 30, 9, 14) +cache/0/16/0/glyphs/73/texture_idx = 0 +cache/0/16/0/glyphs/54/advance = Vector2(8.79688, 16.0938) +cache/0/16/0/glyphs/54/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/54/size = Vector2(11, 14) +cache/0/16/0/glyphs/54/uv_rect = Rect2(178, 30, 11, 14) +cache/0/16/0/glyphs/54/texture_idx = 0 +cache/0/16/0/glyphs/27/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/27/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/27/size = Vector2(11, 14) +cache/0/16/0/glyphs/27/uv_rect = Rect2(191, 30, 11, 14) +cache/0/16/0/glyphs/27/texture_idx = 0 +cache/0/16/0/glyphs/69/advance = Vector2(9.96875, 16.0938) +cache/0/16/0/glyphs/69/offset = Vector2(0, -13) +cache/0/16/0/glyphs/69/size = Vector2(11, 14) +cache/0/16/0/glyphs/69/uv_rect = Rect2(204, 30, 11, 14) +cache/0/16/0/glyphs/69/texture_idx = 0 +cache/0/16/0/glyphs/17/advance = Vector2(4.40625, 16.0938) +cache/0/16/0/glyphs/17/offset = Vector2(0, -4) +cache/0/16/0/glyphs/17/size = Vector2(5, 5) +cache/0/16/0/glyphs/17/uv_rect = Rect2(51, 17, 5, 5) +cache/0/16/0/glyphs/17/texture_idx = 0 +cache/0/16/0/glyphs/42/advance = Vector2(11.625, 16.0938) +cache/0/16/0/glyphs/42/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/42/size = Vector2(13, 14) +cache/0/16/0/glyphs/42/uv_rect = Rect2(217, 30, 13, 14) +cache/0/16/0/glyphs/42/texture_idx = 0 +cache/0/16/0/glyphs/55/advance = Vector2(9.0625, 16.0938) +cache/0/16/0/glyphs/55/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/55/size = Vector2(11, 14) +cache/0/16/0/glyphs/55/uv_rect = Rect2(232, 30, 11, 14) +cache/0/16/0/glyphs/55/texture_idx = 0 +cache/0/16/0/glyphs/49/advance = Vector2(12.5313, 16.0938) +cache/0/16/0/glyphs/49/offset = Vector2(0, -13) +cache/0/16/0/glyphs/49/size = Vector2(13, 14) +cache/0/16/0/glyphs/49/uv_rect = Rect2(1, 48, 13, 14) +cache/0/16/0/glyphs/49/texture_idx = 0 +cache/0/16/0/glyphs/36/advance = Vector2(10.5781, 16.0938) +cache/0/16/0/glyphs/36/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/36/size = Vector2(13, 14) +cache/0/16/0/glyphs/36/uv_rect = Rect2(16, 48, 13, 14) +cache/0/16/0/glyphs/36/texture_idx = 0 +cache/0/16/0/glyphs/90/advance = Vector2(13.0781, 16.0938) +cache/0/16/0/glyphs/90/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/90/size = Vector2(15, 11) +cache/0/16/0/glyphs/90/uv_rect = Rect2(58, 17, 15, 11) +cache/0/16/0/glyphs/90/texture_idx = 0 +cache/0/16/0/glyphs/48/advance = Vector2(14.7656, 16.0938) +cache/0/16/0/glyphs/48/offset = Vector2(0, -13) +cache/0/16/0/glyphs/48/size = Vector2(15, 14) +cache/0/16/0/glyphs/48/uv_rect = Rect2(31, 48, 15, 14) +cache/0/16/0/glyphs/48/texture_idx = 0 +cache/0/16/0/glyphs/53/advance = Vector2(10.2344, 16.0938) +cache/0/16/0/glyphs/53/offset = Vector2(0, -13) +cache/0/16/0/glyphs/53/size = Vector2(12, 14) +cache/0/16/0/glyphs/53/uv_rect = Rect2(48, 48, 12, 14) +cache/0/16/0/glyphs/53/texture_idx = 0 +cache/0/16/0/glyphs/93/advance = Vector2(7.65625, 16.0938) +cache/0/16/0/glyphs/93/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/93/size = Vector2(10, 11) +cache/0/16/0/glyphs/93/uv_rect = Rect2(75, 17, 10, 11) +cache/0/16/0/glyphs/93/texture_idx = 0 +cache/0/16/0/glyphs/5/advance = Vector2(6.98438, 16.0938) +cache/0/16/0/glyphs/5/offset = Vector2(0, -13) +cache/0/16/0/glyphs/5/size = Vector2(7, 7) +cache/0/16/0/glyphs/5/uv_rect = Rect2(87, 17, 7, 7) +cache/0/16/0/glyphs/5/texture_idx = 0 +cache/0/16/0/glyphs/16/advance = Vector2(5.15625, 16.0938) +cache/0/16/0/glyphs/16/offset = Vector2(-1, -7) +cache/0/16/0/glyphs/16/size = Vector2(7, 4) +cache/0/16/0/glyphs/16/uv_rect = Rect2(96, 17, 7, 4) +cache/0/16/0/glyphs/16/texture_idx = 0 +cache/0/16/0/glyphs/33/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/33/offset = Vector2(-1, -12) +cache/0/16/0/glyphs/33/size = Vector2(11, 12) +cache/0/16/0/glyphs/33/uv_rect = Rect2(62, 48, 11, 12) +cache/0/16/0/glyphs/33/texture_idx = 0 +cache/0/16/0/glyphs/19/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/19/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/19/size = Vector2(11, 14) +cache/0/16/0/glyphs/19/uv_rect = Rect2(75, 48, 11, 14) +cache/0/16/0/glyphs/19/texture_idx = 0 +cache/0/16/0/glyphs/564/advance = Vector2(10.2813, 16.0938) +cache/0/16/0/glyphs/564/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/564/size = Vector2(12, 14) +cache/0/16/0/glyphs/564/uv_rect = Rect2(88, 48, 12, 14) +cache/0/16/0/glyphs/564/texture_idx = 0 +cache/0/16/0/glyphs/11/advance = Vector2(5.07813, 16.0938) +cache/0/16/0/glyphs/11/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/11/size = Vector2(7, 17) +cache/0/16/0/glyphs/11/uv_rect = Rect2(1, 64, 7, 17) +cache/0/16/0/glyphs/11/texture_idx = 0 +cache/0/16/0/glyphs/12/advance = Vector2(5.07813, 16.0938) +cache/0/16/0/glyphs/12/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/12/size = Vector2(7, 17) +cache/0/16/0/glyphs/12/uv_rect = Rect2(10, 64, 7, 17) +cache/0/16/0/glyphs/12/texture_idx = 0 +cache/0/16/0/glyphs/15/advance = Vector2(4.28125, 16.0938) +cache/0/16/0/glyphs/15/offset = Vector2(-1, -4) +cache/0/16/0/glyphs/15/size = Vector2(6, 7) +cache/0/16/0/glyphs/15/uv_rect = Rect2(105, 17, 6, 7) +cache/0/16/0/glyphs/15/texture_idx = 0 +cache/0/16/0/glyphs/605/advance = Vector2(16.0781, 16.0938) +cache/0/16/0/glyphs/605/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/605/size = Vector2(17, 14) +cache/0/16/0/glyphs/605/uv_rect = Rect2(102, 48, 17, 14) +cache/0/16/0/glyphs/605/texture_idx = 0 +cache/0/16/0/glyphs/56/advance = Vector2(11.875, 16.0938) +cache/0/16/0/glyphs/56/offset = Vector2(0, -13) +cache/0/16/0/glyphs/56/size = Vector2(12, 14) +cache/0/16/0/glyphs/56/uv_rect = Rect2(121, 48, 12, 14) +cache/0/16/0/glyphs/56/texture_idx = 0 +cache/0/16/0/glyphs/60/advance = Vector2(9.46875, 16.0938) +cache/0/16/0/glyphs/60/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/60/size = Vector2(12, 14) +cache/0/16/0/glyphs/60/uv_rect = Rect2(135, 48, 12, 14) +cache/0/16/0/glyphs/60/texture_idx = 0 +cache/0/16/0/glyphs/21/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/21/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/21/size = Vector2(11, 14) +cache/0/16/0/glyphs/21/uv_rect = Rect2(149, 48, 11, 14) +cache/0/16/0/glyphs/21/texture_idx = 0 +cache/0/16/0/glyphs/22/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/22/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/22/size = Vector2(11, 14) +cache/0/16/0/glyphs/22/uv_rect = Rect2(162, 48, 11, 14) +cache/0/16/0/glyphs/22/texture_idx = 0 +cache/0/16/0/glyphs/43/advance = Vector2(12.0156, 16.0938) +cache/0/16/0/glyphs/43/offset = Vector2(0, -13) +cache/0/16/0/glyphs/43/size = Vector2(12, 14) +cache/0/16/0/glyphs/43/uv_rect = Rect2(175, 48, 12, 14) +cache/0/16/0/glyphs/43/texture_idx = 0 +cache/0/16/0/glyphs/23/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/23/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/23/size = Vector2(11, 14) +cache/0/16/0/glyphs/23/uv_rect = Rect2(189, 48, 11, 14) +cache/0/16/0/glyphs/23/texture_idx = 0 +cache/0/16/0/glyphs/52/advance = Vector2(12.5938, 16.0938) +cache/0/16/0/glyphs/52/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/52/size = Vector2(14, 17) +cache/0/16/0/glyphs/52/uv_rect = Rect2(19, 64, 14, 17) +cache/0/16/0/glyphs/52/texture_idx = 0 +cache/0/16/0/glyphs/8/advance = Vector2(13.7969, 16.0938) +cache/0/16/0/glyphs/8/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/8/size = Vector2(16, 14) +cache/0/16/0/glyphs/8/uv_rect = Rect2(202, 48, 16, 14) +cache/0/16/0/glyphs/8/texture_idx = 0 +cache/0/16/0/glyphs/58/advance = Vector2(15.1406, 16.0938) +cache/0/16/0/glyphs/58/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/58/size = Vector2(18, 14) +cache/0/16/0/glyphs/58/uv_rect = Rect2(220, 48, 18, 14) +cache/0/16/0/glyphs/58/texture_idx = 0 +cache/0/16/0/glyphs/6/advance = Vector2(10.3438, 16.0938) +cache/0/16/0/glyphs/6/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/6/size = Vector2(12, 14) +cache/0/16/0/glyphs/6/uv_rect = Rect2(240, 48, 12, 14) +cache/0/16/0/glyphs/6/texture_idx = 0 +cache/0/16/0/glyphs/24/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/24/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/24/size = Vector2(11, 14) +cache/0/16/0/glyphs/24/uv_rect = Rect2(35, 64, 11, 14) +cache/0/16/0/glyphs/24/texture_idx = 0 +cache/0/16/0/glyphs/77/advance = Vector2(4.46875, 16.0938) +cache/0/16/0/glyphs/77/offset = Vector2(-2, -13) +cache/0/16/0/glyphs/77/size = Vector2(7, 18) +cache/0/16/0/glyphs/77/uv_rect = Rect2(1, 83, 7, 18) +cache/0/16/0/glyphs/77/texture_idx = 0 +cache/0/16/0/glyphs/153/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/153/offset = Vector2(0, -11) +cache/0/16/0/glyphs/153/size = Vector2(10, 10) +cache/0/16/0/glyphs/153/uv_rect = Rect2(113, 17, 10, 10) +cache/0/16/0/glyphs/153/texture_idx = 0 +cache/0/16/0/glyphs/28/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/28/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/28/size = Vector2(11, 14) +cache/0/16/0/glyphs/28/uv_rect = Rect2(48, 64, 11, 14) +cache/0/16/0/glyphs/28/texture_idx = 0 +cache/0/16/0/glyphs/31/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/31/offset = Vector2(-1, -12) +cache/0/16/0/glyphs/31/size = Vector2(11, 12) +cache/0/16/0/glyphs/31/uv_rect = Rect2(61, 64, 11, 12) +cache/0/16/0/glyphs/31/texture_idx = 0 +cache/0/16/0/glyphs/62/advance = Vector2(5.28125, 16.0938) +cache/0/16/0/glyphs/62/offset = Vector2(0, -13) +cache/0/16/0/glyphs/62/size = Vector2(6, 17) +cache/0/16/0/glyphs/62/uv_rect = Rect2(74, 64, 6, 17) +cache/0/16/0/glyphs/62/texture_idx = 0 +cache/0/16/0/glyphs/64/advance = Vector2(5.28125, 16.0938) +cache/0/16/0/glyphs/64/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/64/size = Vector2(7, 17) +cache/0/16/0/glyphs/64/uv_rect = Rect2(82, 64, 7, 17) +cache/0/16/0/glyphs/64/texture_idx = 0 +cache/0/16/0/glyphs/14/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/14/offset = Vector2(-1, -11) +cache/0/16/0/glyphs/14/size = Vector2(11, 10) +cache/0/16/0/glyphs/14/uv_rect = Rect2(125, 17, 11, 10) +cache/0/16/0/glyphs/14/texture_idx = 0 +cache/0/16/0/glyphs/9/advance = Vector2(11.8438, 16.0938) +cache/0/16/0/glyphs/9/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/9/size = Vector2(14, 14) +cache/0/16/0/glyphs/9/uv_rect = Rect2(91, 64, 14, 14) +cache/0/16/0/glyphs/9/texture_idx = 0 +cache/0/16/0/glyphs/909/advance = Vector2(11.625, 16.0938) +cache/0/16/0/glyphs/909/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/909/size = Vector2(15, 14) +cache/0/16/0/glyphs/909/uv_rect = Rect2(107, 64, 15, 14) +cache/0/16/0/glyphs/909/texture_idx = 0 +cache/0/16/0/glyphs/59/advance = Vector2(9.95313, 16.0938) +cache/0/16/0/glyphs/59/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/59/size = Vector2(12, 14) +cache/0/16/0/glyphs/59/uv_rect = Rect2(124, 64, 12, 14) +cache/0/16/0/glyphs/59/texture_idx = 0 +cache/0/16/0/glyphs/45/advance = Vector2(4.78125, 16.0938) +cache/0/16/0/glyphs/45/offset = Vector2(-3, -13) +cache/0/16/0/glyphs/45/size = Vector2(8, 17) +cache/0/16/0/glyphs/45/uv_rect = Rect2(138, 64, 8, 17) +cache/0/16/0/glyphs/45/texture_idx = 0 +cache/0/16/0/glyphs/61/advance = Vector2(9.20313, 16.0938) +cache/0/16/0/glyphs/61/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/61/size = Vector2(11, 14) +cache/0/16/0/glyphs/61/uv_rect = Rect2(148, 64, 11, 14) +cache/0/16/0/glyphs/61/texture_idx = 0 +cache/0/16/0/glyphs/34/advance = Vector2(7.25, 16.0938) +cache/0/16/0/glyphs/34/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/34/size = Vector2(9, 14) +cache/0/16/0/glyphs/34/uv_rect = Rect2(245, 30, 9, 14) +cache/0/16/0/glyphs/34/texture_idx = 0 +cache/0/16/0/glyphs/13/advance = Vector2(8.76563, 16.0938) +cache/0/16/0/glyphs/13/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/13/size = Vector2(11, 10) +cache/0/16/0/glyphs/13/uv_rect = Rect2(138, 17, 11, 10) +cache/0/16/0/glyphs/13/texture_idx = 0 +cache/0/16/0/glyphs/527/advance = Vector2(6.01563, 16.0938) +cache/0/16/0/glyphs/527/offset = Vector2(0, -10) +cache/0/16/0/glyphs/527/size = Vector2(6, 7) +cache/0/16/0/glyphs/527/uv_rect = Rect2(151, 17, 6, 7) +cache/0/16/0/glyphs/527/texture_idx = 0 +cache/0/16/0/glyphs/84/advance = Vector2(9.96875, 16.0938) +cache/0/16/0/glyphs/84/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/84/size = Vector2(11, 15) +cache/0/16/0/glyphs/84/uv_rect = Rect2(161, 64, 11, 15) +cache/0/16/0/glyphs/84/texture_idx = 0 +cache/0/16/0/glyphs/107/advance = Vector2(13.3125, 16.0938) +cache/0/16/0/glyphs/107/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/107/size = Vector2(15, 14) +cache/0/16/0/glyphs/107/uv_rect = Rect2(174, 64, 15, 14) +cache/0/16/0/glyphs/107/texture_idx = 0 +cache/0/16/0/glyphs/10/advance = Vector2(3.89063, 16.0938) +cache/0/16/0/glyphs/10/offset = Vector2(0, -13) +cache/0/16/0/glyphs/10/size = Vector2(4, 7) +cache/0/16/0/glyphs/10/uv_rect = Rect2(159, 17, 4, 7) +cache/0/16/0/glyphs/10/texture_idx = 0 +cache/0/16/0/glyphs/32/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/32/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/32/size = Vector2(11, 8) +cache/0/16/0/glyphs/32/uv_rect = Rect2(165, 17, 11, 8) +cache/0/16/0/glyphs/32/texture_idx = 0 +cache/0/16/0/glyphs/565/advance = Vector2(10.2813, 16.0938) +cache/0/16/0/glyphs/565/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/565/size = Vector2(11, 14) +cache/0/16/0/glyphs/565/uv_rect = Rect2(191, 64, 11, 14) +cache/0/16/0/glyphs/565/texture_idx = 0 +cache/0/16/0/glyphs/63/advance = Vector2(6.25, 16.0938) +cache/0/16/0/glyphs/63/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/63/size = Vector2(9, 14) +cache/0/16/0/glyphs/63/uv_rect = Rect2(204, 64, 9, 14) +cache/0/16/0/glyphs/63/texture_idx = 0 +cache/0/16/0/glyphs/163/advance = Vector2(9.28125, 16.0938) +cache/0/16/0/glyphs/163/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/163/size = Vector2(11, 14) +cache/0/16/0/glyphs/163/uv_rect = Rect2(215, 64, 11, 14) +cache/0/16/0/glyphs/163/texture_idx = 0 +cache/0/16/0/glyphs/181/advance = Vector2(9.78125, 16.0938) +cache/0/16/0/glyphs/181/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/181/size = Vector2(11, 14) +cache/0/16/0/glyphs/181/uv_rect = Rect2(228, 64, 11, 14) +cache/0/16/0/glyphs/181/texture_idx = 0 +cache/0/16/0/glyphs/30/advance = Vector2(4.45313, 16.0938) +cache/0/16/0/glyphs/30/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/30/size = Vector2(6, 14) +cache/0/16/0/glyphs/30/uv_rect = Rect2(241, 64, 6, 14) +cache/0/16/0/glyphs/30/texture_idx = 0 +cache/0/16/0/glyphs/94/advance = Vector2(6.1875, 16.0938) +cache/0/16/0/glyphs/94/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/94/size = Vector2(8, 17) +cache/0/16/0/glyphs/94/uv_rect = Rect2(10, 83, 8, 17) +cache/0/16/0/glyphs/94/texture_idx = 0 +cache/0/16/0/glyphs/96/advance = Vector2(5.9375, 16.0938) +cache/0/16/0/glyphs/96/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/96/size = Vector2(8, 17) +cache/0/16/0/glyphs/96/uv_rect = Rect2(20, 83, 8, 17) +cache/0/16/0/glyphs/96/texture_idx = 0 +cache/0/16/0/glyphs/7/advance = Vector2(9.14063, 16.0938) +cache/0/16/0/glyphs/7/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/7/size = Vector2(11, 16) +cache/0/16/0/glyphs/7/uv_rect = Rect2(30, 83, 11, 16) +cache/0/16/0/glyphs/7/texture_idx = 0 +cache/0/16/0/glyphs/134217800/advance = Vector2(9.21875, 16.0938) +cache/0/16/0/glyphs/134217800/offset = Vector2(0, -10) +cache/0/16/0/glyphs/134217800/size = Vector2(10, 11) +cache/0/16/0/glyphs/134217800/uv_rect = Rect2(178, 17, 10, 11) +cache/0/16/0/glyphs/134217800/texture_idx = 0 +cache/0/16/0/glyphs/268435536/advance = Vector2(15.2969, 16.0938) +cache/0/16/0/glyphs/268435536/offset = Vector2(0, -10) +cache/0/16/0/glyphs/268435536/size = Vector2(16, 11) +cache/0/16/0/glyphs/268435536/uv_rect = Rect2(190, 17, 16, 11) +cache/0/16/0/glyphs/268435536/texture_idx = 0 +cache/0/16/0/glyphs/402653266/advance = Vector2(9.78125, 16.0938) +cache/0/16/0/glyphs/402653266/offset = Vector2(0, -10) +cache/0/16/0/glyphs/402653266/size = Vector2(11, 11) +cache/0/16/0/glyphs/402653266/uv_rect = Rect2(208, 17, 11, 11) +cache/0/16/0/glyphs/402653266/texture_idx = 0 +cache/0/16/0/glyphs/268435545/advance = Vector2(8.5625, 16.0938) +cache/0/16/0/glyphs/268435545/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/268435545/size = Vector2(12, 11) +cache/0/16/0/glyphs/268435545/uv_rect = Rect2(221, 17, 12, 11) +cache/0/16/0/glyphs/268435545/texture_idx = 0 +cache/0/16/0/glyphs/134217731/advance = Vector2(4.15625, 16.0938) +cache/0/16/0/glyphs/134217731/offset = Vector2(-1, -1) +cache/0/16/0/glyphs/134217731/size = Vector2(2, 2) +cache/0/16/0/glyphs/134217731/uv_rect = Rect2(235, 17, 2, 2) +cache/0/16/0/glyphs/134217731/texture_idx = 0 +cache/0/16/0/glyphs/268435493/advance = Vector2(10.5625, 16.0938) +cache/0/16/0/glyphs/268435493/offset = Vector2(1, -13) +cache/0/16/0/glyphs/268435493/size = Vector2(11, 14) +cache/0/16/0/glyphs/268435493/uv_rect = Rect2(43, 83, 11, 14) +cache/0/16/0/glyphs/268435493/texture_idx = 0 +cache/0/16/0/glyphs/134217814/advance = Vector2(7.79688, 16.0938) +cache/0/16/0/glyphs/134217814/offset = Vector2(0, -10) +cache/0/16/0/glyphs/134217814/size = Vector2(9, 11) +cache/0/16/0/glyphs/134217814/uv_rect = Rect2(239, 17, 9, 11) +cache/0/16/0/glyphs/134217814/texture_idx = 0 +cache/0/16/0/glyphs/134217807/advance = Vector2(4.46875, 16.0938) +cache/0/16/0/glyphs/134217807/offset = Vector2(0, -13) +cache/0/16/0/glyphs/134217807/size = Vector2(5, 14) +cache/0/16/0/glyphs/134217807/uv_rect = Rect2(249, 64, 5, 14) +cache/0/16/0/glyphs/134217807/texture_idx = 0 +cache/0/16/0/glyphs/402653260/advance = Vector2(4.46875, 16.0938) +cache/0/16/0/glyphs/402653260/offset = Vector2(0, -13) +cache/0/16/0/glyphs/402653260/size = Vector2(6, 14) +cache/0/16/0/glyphs/402653260/uv_rect = Rect2(56, 83, 6, 14) +cache/0/16/0/glyphs/402653260/texture_idx = 0 +cache/0/16/0/glyphs/134217809/advance = Vector2(10.1563, 16.0938) +cache/0/16/0/glyphs/134217809/offset = Vector2(0, -10) +cache/0/16/0/glyphs/134217809/size = Vector2(11, 11) +cache/0/16/0/glyphs/134217809/uv_rect = Rect2(64, 83, 11, 11) +cache/0/16/0/glyphs/134217809/texture_idx = 0 +cache/0/16/0/glyphs/268435528/advance = Vector2(9.21875, 16.0938) +cache/0/16/0/glyphs/268435528/offset = Vector2(0, -10) +cache/0/16/0/glyphs/268435528/size = Vector2(10, 11) +cache/0/16/0/glyphs/268435528/uv_rect = Rect2(77, 83, 10, 11) +cache/0/16/0/glyphs/268435528/texture_idx = 0 +cache/0/16/0/glyphs/402653227/advance = Vector2(12.0156, 16.0938) +cache/0/16/0/glyphs/402653227/offset = Vector2(1, -13) +cache/0/16/0/glyphs/402653227/size = Vector2(12, 14) +cache/0/16/0/glyphs/402653227/uv_rect = Rect2(89, 83, 12, 14) +cache/0/16/0/glyphs/402653227/texture_idx = 0 +cache/0/16/0/glyphs/402653256/advance = Vector2(9.21875, 16.0938) +cache/0/16/0/glyphs/402653256/offset = Vector2(0, -10) +cache/0/16/0/glyphs/402653256/size = Vector2(11, 11) +cache/0/16/0/glyphs/402653256/uv_rect = Rect2(103, 83, 11, 11) +cache/0/16/0/glyphs/402653256/texture_idx = 0 +cache/0/16/0/glyphs/134217811/advance = Vector2(9.96875, 16.0938) +cache/0/16/0/glyphs/134217811/offset = Vector2(0, -10) +cache/0/16/0/glyphs/134217811/size = Vector2(11, 15) +cache/0/16/0/glyphs/134217811/uv_rect = Rect2(116, 83, 11, 15) +cache/0/16/0/glyphs/134217811/texture_idx = 0 +cache/0/16/0/glyphs/268435541/advance = Vector2(6.90625, 16.0938) +cache/0/16/0/glyphs/268435541/offset = Vector2(0, -10) +cache/0/16/0/glyphs/268435541/size = Vector2(9, 11) +cache/0/16/0/glyphs/268435541/uv_rect = Rect2(129, 83, 9, 11) +cache/0/16/0/glyphs/268435541/texture_idx = 0 +cache/0/16/0/glyphs/268435459/advance = Vector2(4.15625, 16.0938) +cache/0/16/0/glyphs/268435459/offset = Vector2(-1, -1) +cache/0/16/0/glyphs/268435459/size = Vector2(2, 2) +cache/0/16/0/glyphs/268435459/uv_rect = Rect2(250, 17, 2, 2) +cache/0/16/0/glyphs/268435459/texture_idx = 0 +cache/0/16/0/glyphs/268435524/advance = Vector2(9.28125, 16.0938) +cache/0/16/0/glyphs/268435524/offset = Vector2(0, -10) +cache/0/16/0/glyphs/268435524/size = Vector2(10, 11) +cache/0/16/0/glyphs/268435524/uv_rect = Rect2(140, 83, 10, 11) +cache/0/16/0/glyphs/268435524/texture_idx = 0 +cache/0/16/0/glyphs/134217796/advance = Vector2(9.28125, 16.0938) +cache/0/16/0/glyphs/134217796/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/134217796/size = Vector2(11, 11) +cache/0/16/0/glyphs/134217796/uv_rect = Rect2(152, 83, 11, 11) +cache/0/16/0/glyphs/134217796/texture_idx = 0 +cache/0/16/0/glyphs/268435535/advance = Vector2(4.46875, 16.0938) +cache/0/16/0/glyphs/268435535/offset = Vector2(0, -13) +cache/0/16/0/glyphs/268435535/size = Vector2(5, 14) +cache/0/16/0/glyphs/268435535/uv_rect = Rect2(165, 83, 5, 14) +cache/0/16/0/glyphs/268435535/texture_idx = 0 +cache/0/16/0/glyphs/268435539/advance = Vector2(9.96875, 16.0938) +cache/0/16/0/glyphs/268435539/offset = Vector2(0, -10) +cache/0/16/0/glyphs/268435539/size = Vector2(11, 15) +cache/0/16/0/glyphs/268435539/uv_rect = Rect2(172, 83, 11, 15) +cache/0/16/0/glyphs/268435539/texture_idx = 0 +cache/0/16/0/glyphs/402653269/advance = Vector2(6.90625, 16.0938) +cache/0/16/0/glyphs/402653269/offset = Vector2(1, -10) +cache/0/16/0/glyphs/402653269/size = Vector2(8, 11) +cache/0/16/0/glyphs/402653269/uv_rect = Rect2(185, 83, 8, 11) +cache/0/16/0/glyphs/402653269/texture_idx = 0 +cache/0/16/0/glyphs/402653187/advance = Vector2(4.15625, 16.0938) +cache/0/16/0/glyphs/402653187/offset = Vector2(-1, -1) +cache/0/16/0/glyphs/402653187/size = Vector2(2, 2) +cache/0/16/0/glyphs/402653187/uv_rect = Rect2(195, 83, 2, 2) +cache/0/16/0/glyphs/402653187/texture_idx = 0 +cache/0/16/0/glyphs/402653265/advance = Vector2(10.1563, 16.0938) +cache/0/16/0/glyphs/402653265/offset = Vector2(1, -10) +cache/0/16/0/glyphs/402653265/size = Vector2(10, 11) +cache/0/16/0/glyphs/402653265/uv_rect = Rect2(199, 83, 10, 11) +cache/0/16/0/glyphs/402653265/texture_idx = 0 +cache/0/16/0/glyphs/402653255/advance = Vector2(9.96875, 16.0938) +cache/0/16/0/glyphs/402653255/offset = Vector2(0, -13) +cache/0/16/0/glyphs/402653255/size = Vector2(11, 14) +cache/0/16/0/glyphs/402653255/uv_rect = Rect2(211, 83, 11, 14) +cache/0/16/0/glyphs/402653255/texture_idx = 0 +cache/0/16/0/glyphs/268435537/advance = Vector2(10.1563, 16.0938) +cache/0/16/0/glyphs/268435537/offset = Vector2(0, -10) +cache/0/16/0/glyphs/268435537/size = Vector2(11, 11) +cache/0/16/0/glyphs/268435537/uv_rect = Rect2(224, 83, 11, 11) +cache/0/16/0/glyphs/268435537/texture_idx = 0 +cache/0/16/0/glyphs/402653267/advance = Vector2(9.96875, 16.0938) +cache/0/16/0/glyphs/402653267/offset = Vector2(1, -10) +cache/0/16/0/glyphs/402653267/size = Vector2(10, 15) +cache/0/16/0/glyphs/402653267/uv_rect = Rect2(237, 83, 10, 15) +cache/0/16/0/glyphs/402653267/texture_idx = 0 +cache/0/16/0/glyphs/268435538/advance = Vector2(9.78125, 16.0938) +cache/0/16/0/glyphs/268435538/offset = Vector2(0, -10) +cache/0/16/0/glyphs/268435538/size = Vector2(11, 11) +cache/0/16/0/glyphs/268435538/uv_rect = Rect2(1, 103, 11, 11) +cache/0/16/0/glyphs/268435538/texture_idx = 0 +cache/0/16/0/glyphs/268435526/advance = Vector2(7.92188, 16.0938) +cache/0/16/0/glyphs/268435526/offset = Vector2(0, -10) +cache/0/16/0/glyphs/268435526/size = Vector2(9, 11) +cache/0/16/0/glyphs/268435526/uv_rect = Rect2(14, 103, 9, 11) +cache/0/16/0/glyphs/268435526/texture_idx = 0 +cache/0/16/0/glyphs/134217803/advance = Vector2(10.1563, 16.0938) +cache/0/16/0/glyphs/134217803/offset = Vector2(0, -13) +cache/0/16/0/glyphs/134217803/size = Vector2(11, 14) +cache/0/16/0/glyphs/134217803/uv_rect = Rect2(1, 116, 11, 14) +cache/0/16/0/glyphs/134217803/texture_idx = 0 +cache/0/16/0/glyphs/268435532/advance = Vector2(4.46875, 16.0938) +cache/0/16/0/glyphs/268435532/offset = Vector2(0, -13) +cache/0/16/0/glyphs/268435532/size = Vector2(5, 14) +cache/0/16/0/glyphs/268435532/uv_rect = Rect2(14, 116, 5, 14) +cache/0/16/0/glyphs/268435532/texture_idx = 0 +cache/0/16/0/glyphs/134217798/advance = Vector2(7.92188, 16.0938) +cache/0/16/0/glyphs/134217798/offset = Vector2(0, -10) +cache/0/16/0/glyphs/134217798/size = Vector2(9, 11) +cache/0/16/0/glyphs/134217798/uv_rect = Rect2(25, 103, 9, 11) +cache/0/16/0/glyphs/134217798/texture_idx = 0 +cache/0/16/0/glyphs/268435525/advance = Vector2(9.96875, 16.0938) +cache/0/16/0/glyphs/268435525/offset = Vector2(0, -13) +cache/0/16/0/glyphs/268435525/size = Vector2(11, 14) +cache/0/16/0/glyphs/268435525/uv_rect = Rect2(21, 116, 11, 14) +cache/0/16/0/glyphs/268435525/texture_idx = 0 +cache/0/16/0/glyphs/268435492/advance = Vector2(10.5781, 16.0938) +cache/0/16/0/glyphs/268435492/offset = Vector2(-1, -13) +cache/0/16/0/glyphs/268435492/size = Vector2(14, 14) +cache/0/16/0/glyphs/268435492/uv_rect = Rect2(34, 116, 14, 14) +cache/0/16/0/glyphs/268435492/texture_idx = 0 +cache/0/16/0/glyphs/268435542/advance = Vector2(7.79688, 16.0938) +cache/0/16/0/glyphs/268435542/offset = Vector2(0, -10) +cache/0/16/0/glyphs/268435542/size = Vector2(9, 11) +cache/0/16/0/glyphs/268435542/uv_rect = Rect2(36, 103, 9, 11) +cache/0/16/0/glyphs/268435542/texture_idx = 0 +cache/0/16/0/glyphs/134217808/advance = Vector2(15.2969, 16.0938) +cache/0/16/0/glyphs/134217808/offset = Vector2(0, -10) +cache/0/16/0/glyphs/134217808/size = Vector2(16, 11) +cache/0/16/0/glyphs/134217808/uv_rect = Rect2(47, 103, 16, 11) +cache/0/16/0/glyphs/134217808/texture_idx = 0 +cache/0/16/0/glyphs/134217817/advance = Vector2(8.5625, 16.0938) +cache/0/16/0/glyphs/134217817/offset = Vector2(-1, -10) +cache/0/16/0/glyphs/134217817/size = Vector2(11, 11) +cache/0/16/0/glyphs/134217817/uv_rect = Rect2(65, 103, 11, 11) +cache/0/16/0/glyphs/134217817/texture_idx = 0 +cache/0/16/0/glyphs/134217767/advance = Vector2(11.75, 16.0938) +cache/0/16/0/glyphs/134217767/offset = Vector2(0, -13) +cache/0/16/0/glyphs/134217767/size = Vector2(13, 14) +cache/0/16/0/glyphs/134217767/uv_rect = Rect2(50, 116, 13, 14) +cache/0/16/0/glyphs/134217767/texture_idx = 0 +cache/0/16/0/glyphs/402653263/advance = Vector2(4.46875, 16.0938) +cache/0/16/0/glyphs/402653263/offset = Vector2(1, -13) +cache/0/16/0/glyphs/402653263/size = Vector2(4, 14) +cache/0/16/0/glyphs/402653263/uv_rect = Rect2(65, 116, 4, 14) +cache/0/16/0/glyphs/402653263/texture_idx = 0 +cache/0/16/0/glyphs/402653235/advance = Vector2(9.84375, 16.0938) +cache/0/16/0/glyphs/402653235/offset = Vector2(1, -13) +cache/0/16/0/glyphs/402653235/size = Vector2(10, 14) +cache/0/16/0/glyphs/402653235/uv_rect = Rect2(71, 116, 10, 14) +cache/0/16/0/glyphs/402653235/texture_idx = 0 +cache/0/16/0/glyphs/134217799/advance = Vector2(9.96875, 16.0938) +cache/0/16/0/glyphs/134217799/offset = Vector2(0, -13) +cache/0/16/0/glyphs/134217799/size = Vector2(10, 14) +cache/0/16/0/glyphs/134217799/uv_rect = Rect2(83, 116, 10, 14) +cache/0/16/0/glyphs/134217799/texture_idx = 0 +cache/0/16/0/glyphs/402653254/advance = Vector2(7.92188, 16.0938) +cache/0/16/0/glyphs/402653254/offset = Vector2(0, -10) +cache/0/16/0/glyphs/402653254/size = Vector2(10, 11) +cache/0/16/0/glyphs/402653254/uv_rect = Rect2(78, 103, 10, 11) +cache/0/16/0/glyphs/402653254/texture_idx = 0 +cache/0/16/0/glyphs/402653271/advance = Vector2(6.29688, 16.0938) +cache/0/16/0/glyphs/402653271/offset = Vector2(0, -12) +cache/0/16/0/glyphs/402653271/size = Vector2(8, 13) +cache/0/16/0/glyphs/402653271/uv_rect = Rect2(95, 116, 8, 13) +cache/0/16/0/glyphs/402653271/texture_idx = 0 +cache/0/16/0/glyphs/134217813/advance = Vector2(6.90625, 16.0938) +cache/0/16/0/glyphs/134217813/offset = Vector2(0, -10) +cache/0/16/0/glyphs/134217813/size = Vector2(8, 11) +cache/0/16/0/glyphs/134217813/uv_rect = Rect2(90, 103, 8, 11) +cache/0/16/0/glyphs/134217813/texture_idx = 0 +cache/0/16/0/glyphs/268435467/advance = Vector2(5.07813, 16.0938) +cache/0/16/0/glyphs/268435467/offset = Vector2(0, -13) +cache/0/16/0/glyphs/268435467/size = Vector2(7, 17) +cache/0/16/0/glyphs/268435467/uv_rect = Rect2(1, 132, 7, 17) +cache/0/16/0/glyphs/268435467/texture_idx = 0 +cache/0/16/0/glyphs/402653252/advance = Vector2(9.28125, 16.0938) +cache/0/16/0/glyphs/402653252/offset = Vector2(0, -10) +cache/0/16/0/glyphs/402653252/size = Vector2(10, 11) +cache/0/16/0/glyphs/402653252/uv_rect = Rect2(100, 103, 10, 11) +cache/0/16/0/glyphs/402653252/texture_idx = 0 +cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/1/variation_coordinates = {} +cache/1/face_index = 0 +cache/1/embolden = 1.2 +cache/1/transform = Transform2D(1, 0, 0, 1, 0, 0) +cache/1/spacing_top = 0 +cache/1/spacing_bottom = 0 +cache/1/spacing_space = 0 +cache/1/spacing_glyph = 0 +cache/1/16/0/ascent = 18.0 +cache/1/16/0/descent = 5.0 +cache/1/16/0/underline_position = 1.60938 +cache/1/16/0/underline_thickness = 0.796875 +cache/1/16/0/scale = 1.0 +cache/1/16/0/textures/0/offsets = PackedInt32Array(246, 0, 10, 18, 69, 18, 187, 19) +cache/1/16/0/textures/0/image = SubResource("Image_j7vsp") +cache/1/16/0/glyphs/37/advance = Vector2(10.8625, 16.0938) +cache/1/16/0/glyphs/37/offset = Vector2(0, -15) +cache/1/16/0/glyphs/37/size = Vector2(12, 16) +cache/1/16/0/glyphs/37/uv_rect = Rect2(1, 1, 12, 16) +cache/1/16/0/glyphs/37/texture_idx = 0 +cache/1/16/0/glyphs/68/advance = Vector2(9.58125, 16.0938) +cache/1/16/0/glyphs/68/offset = Vector2(-1, -12) +cache/1/16/0/glyphs/68/size = Vector2(12, 13) +cache/1/16/0/glyphs/68/uv_rect = Rect2(15, 1, 12, 13) +cache/1/16/0/glyphs/68/texture_idx = 0 +cache/1/16/0/glyphs/86/advance = Vector2(8.09688, 16.0938) +cache/1/16/0/glyphs/86/offset = Vector2(-1, -12) +cache/1/16/0/glyphs/86/size = Vector2(11, 13) +cache/1/16/0/glyphs/86/uv_rect = Rect2(29, 1, 11, 13) +cache/1/16/0/glyphs/86/texture_idx = 0 +cache/1/16/0/glyphs/72/advance = Vector2(9.51875, 16.0938) +cache/1/16/0/glyphs/72/offset = Vector2(-1, -12) +cache/1/16/0/glyphs/72/size = Vector2(12, 13) +cache/1/16/0/glyphs/72/uv_rect = Rect2(42, 1, 12, 13) +cache/1/16/0/glyphs/72/texture_idx = 0 +cache/1/16/0/glyphs/79/advance = Vector2(4.76875, 16.0938) +cache/1/16/0/glyphs/79/offset = Vector2(0, -15) +cache/1/16/0/glyphs/79/size = Vector2(6, 16) +cache/1/16/0/glyphs/79/uv_rect = Rect2(56, 1, 6, 16) +cache/1/16/0/glyphs/79/texture_idx = 0 +cache/1/16/0/glyphs/76/advance = Vector2(4.76875, 16.0938) +cache/1/16/0/glyphs/76/offset = Vector2(0, -15) +cache/1/16/0/glyphs/76/size = Vector2(6, 16) +cache/1/16/0/glyphs/76/uv_rect = Rect2(64, 1, 6, 16) +cache/1/16/0/glyphs/76/texture_idx = 0 +cache/1/16/0/glyphs/81/advance = Vector2(10.4563, 16.0938) +cache/1/16/0/glyphs/81/offset = Vector2(0, -12) +cache/1/16/0/glyphs/81/size = Vector2(12, 13) +cache/1/16/0/glyphs/81/uv_rect = Rect2(72, 1, 12, 13) +cache/1/16/0/glyphs/81/texture_idx = 0 +cache/1/16/0/glyphs/43/advance = Vector2(12.3156, 16.0938) +cache/1/16/0/glyphs/43/offset = Vector2(0, -15) +cache/1/16/0/glyphs/43/size = Vector2(13, 16) +cache/1/16/0/glyphs/43/uv_rect = Rect2(86, 1, 13, 16) +cache/1/16/0/glyphs/43/texture_idx = 0 +cache/1/16/0/glyphs/83/advance = Vector2(10.2688, 16.0938) +cache/1/16/0/glyphs/83/offset = Vector2(0, -12) +cache/1/16/0/glyphs/83/size = Vector2(12, 17) +cache/1/16/0/glyphs/83/uv_rect = Rect2(1, 19, 12, 17) +cache/1/16/0/glyphs/83/texture_idx = 0 +cache/1/16/0/glyphs/85/advance = Vector2(7.20625, 16.0938) +cache/1/16/0/glyphs/85/offset = Vector2(0, -12) +cache/1/16/0/glyphs/85/size = Vector2(9, 13) +cache/1/16/0/glyphs/85/uv_rect = Rect2(101, 1, 9, 13) +cache/1/16/0/glyphs/85/texture_idx = 0 +cache/1/16/0/glyphs/58/advance = Vector2(15.4406, 16.0938) +cache/1/16/0/glyphs/58/offset = Vector2(-2, -15) +cache/1/16/0/glyphs/58/size = Vector2(20, 16) +cache/1/16/0/glyphs/58/uv_rect = Rect2(112, 1, 20, 16) +cache/1/16/0/glyphs/58/texture_idx = 0 +cache/1/16/0/glyphs/78/advance = Vector2(9.45625, 16.0938) +cache/1/16/0/glyphs/78/offset = Vector2(0, -15) +cache/1/16/0/glyphs/78/size = Vector2(12, 16) +cache/1/16/0/glyphs/78/uv_rect = Rect2(134, 1, 12, 16) +cache/1/16/0/glyphs/78/texture_idx = 0 +cache/1/16/0/glyphs/55/advance = Vector2(9.3625, 16.0938) +cache/1/16/0/glyphs/55/offset = Vector2(-1, -15) +cache/1/16/0/glyphs/55/size = Vector2(12, 16) +cache/1/16/0/glyphs/55/uv_rect = Rect2(148, 1, 12, 16) +cache/1/16/0/glyphs/55/texture_idx = 0 +cache/1/16/0/glyphs/82/advance = Vector2(10.0813, 16.0938) +cache/1/16/0/glyphs/82/offset = Vector2(-1, -12) +cache/1/16/0/glyphs/82/size = Vector2(13, 13) +cache/1/16/0/glyphs/82/uv_rect = Rect2(162, 1, 13, 13) +cache/1/16/0/glyphs/82/texture_idx = 0 +cache/1/16/0/glyphs/51/advance = Vector2(10.1438, 16.0938) +cache/1/16/0/glyphs/51/offset = Vector2(0, -15) +cache/1/16/0/glyphs/51/size = Vector2(12, 16) +cache/1/16/0/glyphs/51/uv_rect = Rect2(177, 1, 12, 16) +cache/1/16/0/glyphs/51/texture_idx = 0 +cache/1/16/0/glyphs/70/advance = Vector2(8.22188, 16.0938) +cache/1/16/0/glyphs/70/offset = Vector2(-1, -12) +cache/1/16/0/glyphs/70/size = Vector2(11, 13) +cache/1/16/0/glyphs/70/uv_rect = Rect2(191, 1, 11, 13) +cache/1/16/0/glyphs/70/texture_idx = 0 +cache/1/16/0/glyphs/75/advance = Vector2(10.4563, 16.0938) +cache/1/16/0/glyphs/75/offset = Vector2(0, -15) +cache/1/16/0/glyphs/75/size = Vector2(12, 16) +cache/1/16/0/glyphs/75/uv_rect = Rect2(204, 1, 12, 16) +cache/1/16/0/glyphs/75/texture_idx = 0 +cache/1/16/0/glyphs/88/advance = Vector2(10.4563, 16.0938) +cache/1/16/0/glyphs/88/offset = Vector2(0, -12) +cache/1/16/0/glyphs/88/size = Vector2(12, 13) +cache/1/16/0/glyphs/88/uv_rect = Rect2(218, 1, 12, 13) +cache/1/16/0/glyphs/88/texture_idx = 0 +cache/1/16/0/glyphs/38/advance = Vector2(10.4406, 16.0938) +cache/1/16/0/glyphs/38/offset = Vector2(-1, -15) +cache/1/16/0/glyphs/38/size = Vector2(13, 16) +cache/1/16/0/glyphs/38/uv_rect = Rect2(232, 1, 13, 16) +cache/1/16/0/glyphs/38/texture_idx = 0 +cache/1/16/0/glyphs/69/advance = Vector2(10.2688, 16.0938) +cache/1/16/0/glyphs/69/offset = Vector2(0, -15) +cache/1/16/0/glyphs/69/size = Vector2(12, 16) +cache/1/16/0/glyphs/69/uv_rect = Rect2(15, 19, 12, 16) +cache/1/16/0/glyphs/69/texture_idx = 0 +cache/1/16/0/glyphs/39/advance = Vector2(12.05, 16.0938) +cache/1/16/0/glyphs/39/offset = Vector2(0, -15) +cache/1/16/0/glyphs/39/size = Vector2(13, 16) +cache/1/16/0/glyphs/39/uv_rect = Rect2(29, 19, 13, 16) +cache/1/16/0/glyphs/39/texture_idx = 0 +cache/1/16/0/glyphs/74/advance = Vector2(9.20625, 16.0938) +cache/1/16/0/glyphs/74/offset = Vector2(-1, -12) +cache/1/16/0/glyphs/74/size = Vector2(12, 17) +cache/1/16/0/glyphs/74/uv_rect = Rect2(44, 19, 12, 17) +cache/1/16/0/glyphs/74/texture_idx = 0 +cache/1/16/0/glyphs/87/advance = Vector2(6.59688, 16.0938) +cache/1/16/0/glyphs/87/offset = Vector2(-1, -14) +cache/1/16/0/glyphs/87/size = Vector2(10, 15) +cache/1/16/0/glyphs/87/uv_rect = Rect2(58, 19, 10, 15) +cache/1/16/0/glyphs/87/texture_idx = 0 +cache/1/16/0/kerning_overrides/16/0 = Vector2(0, 0) + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_0t24x"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 + +[sub_resource type="Image" id="Image_edeay"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_3vfrx"] +image = SubResource("Image_edeay") + +[node name="MigrationStep" type="HBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_if6f3") + +[node name="CheckBox" type="CheckBox" parent="."] +layout_mode = 2 +size_flags_vertical = 4 +mouse_filter = 2 + +[node name="Description" type="RichTextLabel" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_fonts/normal_font = SubResource("FontFile_q72mg") +theme_override_fonts/bold_font = SubResource("FontFile_q72mg") +theme_override_styles/normal = SubResource("StyleBoxEmpty_0t24x") +bbcode_enabled = true +text = "Remove [b]BaselineHelper[/b] and [b]WalkToHelper[/b] nodes in [b]PopochiuClickable[/b]s. Also remove [b]DialogPos[/b] node in [b]PopochiuCharacter[/b]s. (prior release)" +fit_content = true + +[node name="Progress" type="TextureRect" parent="."] +custom_minimum_size = Vector2(24, 24) +layout_mode = 2 +texture = SubResource("ImageTexture_3vfrx") +stretch_mode = 5 diff --git a/addons/popochiu/editor/popups/migrations_panel/migration_tab.gd b/addons/popochiu/editor/popups/migrations_panel/migration_tab.gd new file mode 100644 index 0000000..88e8638 --- /dev/null +++ b/addons/popochiu/editor/popups/migrations_panel/migration_tab.gd @@ -0,0 +1,44 @@ +@tool +extends PanelContainer + +const MIGRATION_STEP_SCENE = preload( + "res://addons/popochiu/editor/popups/migrations_panel/migration_step.tscn" +) +const MigrationStep = preload( + "res://addons/popochiu/editor/popups/migrations_panel/migration_step.gd" +) + +@onready var description: Label = %Description +@onready var steps: VBoxContainer = %Steps + + +#region Public ##################################################################################### +func set_steps(steps_texts: Array) -> void: + for text: String in steps_texts: + var step: MigrationStep = MIGRATION_STEP_SCENE.instantiate() + steps.add_child(step) + step.description.text = text + + +func start_step(idx: int) -> void: + (steps.get_child(idx) as MigrationStep).start() + + +func update_steps(popochiu_migration: PopochiuMigration) -> void: + for idx: int in popochiu_migration.completed: + var step: MigrationStep = steps.get_child(idx) + step.check_box.set_pressed_no_signal(true) + step.stop() + + for idx: int in popochiu_migration.ignored: + var step: MigrationStep = steps.get_child(idx) + step.check_box.set_pressed_no_signal(false) + step.modulate.a = 0.5 + step.stop() + + +func get_total_height() -> float: + return description.size.y + steps.size.y + + +#endregion diff --git a/addons/popochiu/editor/popups/migrations_panel/migration_tab.gd.uid b/addons/popochiu/editor/popups/migrations_panel/migration_tab.gd.uid new file mode 100644 index 0000000..39a0a97 --- /dev/null +++ b/addons/popochiu/editor/popups/migrations_panel/migration_tab.gd.uid @@ -0,0 +1 @@ +uid://uwi5nm4r2p1k diff --git a/addons/popochiu/editor/popups/migrations_panel/migration_tab.tscn b/addons/popochiu/editor/popups/migrations_panel/migration_tab.tscn new file mode 100644 index 0000000..df2ee9f --- /dev/null +++ b/addons/popochiu/editor/popups/migrations_panel/migration_tab.tscn @@ -0,0 +1,35 @@ +[gd_scene load_steps=2 format=3 uid="uid://c1ivmn6tasatp"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/migrations_panel/migration_tab.gd" id="1_2mn16"] + +[node name="MigrationTab" type="PanelContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_2mn16") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 2 + +[node name="Description" type="Label" parent="VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "The migration Description" + +[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="Steps" type="VBoxContainer" parent="VBoxContainer/MarginContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_constants/separation = 8 diff --git a/addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd new file mode 100644 index 0000000..4442e9b --- /dev/null +++ b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd @@ -0,0 +1,50 @@ +@tool +extends Control + +const MIGRATION_TAB_SCENE = preload( + "res://addons/popochiu/editor/popups/migrations_panel/migration_tab.tscn" +) +const MigrationTab = preload( + "res://addons/popochiu/editor/popups/migrations_panel/migration_tab.gd" +) + +@onready var tab_container: TabContainer = %TabContainer +@onready var reload_label: Label = %ReloadLabel + + +#region Godot ###################################################################################### +func _ready() -> void: + reload_label.hide() + + +#endregion + +#region Public ##################################################################################### +func add_migration(popochiu_migration: PopochiuMigration) -> void: + var migration := MIGRATION_TAB_SCENE.instantiate() + tab_container.add_child.call_deferred(migration) + await migration.ready + + migration.name = popochiu_migration.get_migration_name() + migration.anchors_preset = Control.PRESET_FULL_RECT + migration.description.text = popochiu_migration.DESCRIPTION + migration.set_steps(popochiu_migration.STEPS) + + +func start_step(popochiu_migration: PopochiuMigration, idx: int) -> void: + var migration_tab: MigrationTab = tab_container.get_node( + popochiu_migration.get_migration_name() + ) + tab_container.current_tab = migration_tab.get_index() + migration_tab.start_step(idx) + + +func update_steps(popochiu_migration: PopochiuMigration) -> void: + var migration_tab: MigrationTab = tab_container.get_node( + popochiu_migration.get_migration_name() + ) + tab_container.current_tab = migration_tab.get_index() + migration_tab.update_steps(popochiu_migration) + + +#endregion diff --git a/addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd.uid b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd.uid new file mode 100644 index 0000000..f89256e --- /dev/null +++ b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd.uid @@ -0,0 +1 @@ +uid://bonq4almsk3mc diff --git a/addons/popochiu/editor/popups/migrations_panel/migrations_panel.tscn b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.tscn new file mode 100644 index 0000000..f29ed1e --- /dev/null +++ b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.tscn @@ -0,0 +1,36 @@ +[gd_scene load_steps=2 format=3 uid="uid://dws64ahd0a1s6"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd" id="1_brkhu"] + +[node name="MigrationsPanel" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_brkhu") + +[node name="PanelContainer" type="PanelContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +layout_mode = 2 + +[node name="TabContainer" type="TabContainer" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 + +[node name="ReloadLabel" type="Label" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(320, 0) +layout_mode = 2 +text = "The engine will restart after clicking OK." +autowrap_mode = 2 diff --git a/addons/popochiu/editor/popups/progress/progress.gd b/addons/popochiu/editor/popups/progress/progress.gd new file mode 100644 index 0000000..fb0a885 --- /dev/null +++ b/addons/popochiu/editor/popups/progress/progress.gd @@ -0,0 +1,13 @@ +@tool +extends Control + +@onready var label: Label = %Label +@onready var progress_bar: ProgressBar = %ProgressBar + + +#region Public ##################################################################################### +func close() -> void: + get_parent().queue_free() + + +#endregion diff --git a/addons/popochiu/editor/popups/progress/progress.gd.uid b/addons/popochiu/editor/popups/progress/progress.gd.uid new file mode 100644 index 0000000..77a7d72 --- /dev/null +++ b/addons/popochiu/editor/popups/progress/progress.gd.uid @@ -0,0 +1 @@ +uid://c7auv18imrv6o diff --git a/addons/popochiu/editor/popups/progress/progress.tscn b/addons/popochiu/editor/popups/progress/progress.tscn new file mode 100644 index 0000000..ec4790f --- /dev/null +++ b/addons/popochiu/editor/popups/progress/progress.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=2 format=3 uid="uid://2smr378ligwp"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/progress/progress.gd" id="1_hl3vb"] + +[node name="ProgressDialog" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_hl3vb") + +[node name="PanelContainer" type="PanelContainer" parent="."] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 54.0 +grow_horizontal = 2 + +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"] +layout_mode = 2 +alignment = 1 + +[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Text..." +horizontal_alignment = 1 + +[node name="ProgressBar" type="ProgressBar" parent="PanelContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 diff --git a/addons/popochiu/editor/popups/setup/gui_template_button.gd b/addons/popochiu/editor/popups/setup/gui_template_button.gd new file mode 100644 index 0000000..30be135 --- /dev/null +++ b/addons/popochiu/editor/popups/setup/gui_template_button.gd @@ -0,0 +1,4 @@ +extends Button + +@export_multiline var description := "" +@export var reference: Texture diff --git a/addons/popochiu/editor/popups/setup/gui_template_button.gd.uid b/addons/popochiu/editor/popups/setup/gui_template_button.gd.uid new file mode 100644 index 0000000..9cfdbf4 --- /dev/null +++ b/addons/popochiu/editor/popups/setup/gui_template_button.gd.uid @@ -0,0 +1 @@ +uid://jipsgr06wtsu diff --git a/addons/popochiu/editor/popups/setup/setup.gd b/addons/popochiu/editor/popups/setup/setup.gd new file mode 100644 index 0000000..1a7f5c8 --- /dev/null +++ b/addons/popochiu/editor/popups/setup/setup.gd @@ -0,0 +1,322 @@ +@tool +extends Control + +signal template_copy_completed +signal size_calculated + +enum GameTypes { + CUSTOM, + HD, + RETRO_PIXEL, +} + +const SCALE_MESSAGE =\ +"[center]▶ Base size = 356x200 | [b]scale = ( %.2f, %.2f )[/b] ◀[/center]\n\ +By default the GUI will match your native game resolution. You can change this with the\ + [code]Project Settings > Popochiu > GUI > Experimental Scale Gui[/code] checkbox." +const COPY_ALPHA = 0.1 +const GUITemplateButton = preload( + "res://addons/popochiu/editor/popups/setup/gui_template_button.gd" +) +const PopochiuGuiTemplatesHelper = preload( + "res://addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd" +) + +var _selected_template: GUITemplateButton +var _is_closing := false +var _es := EditorInterface.get_editor_settings() + +@onready var welcome: RichTextLabel = %Welcome +@onready var game_width: SpinBox = %GameWidth +@onready var game_height: SpinBox = %GameHeight +@onready var scale_message: RichTextLabel = %ScaleMessage +@onready var test_width: SpinBox = %TestWidth +@onready var test_height: SpinBox = %TestHeight +@onready var game_type: OptionButton = %GameType +# ---- GUI templates section ----------------------------------------------------------------------- +@onready var gui_templates: HBoxContainer = %GUITemplates +@onready var gui_templates_title: Label = %GUITemplatesTitle +@onready var gui_templates_description: Label = %GUITemplatesDescription +@onready var template_description_container: PanelContainer = %TemplateDescriptionContainer +@onready var template_description: RichTextLabel = %TemplateDescription +@onready var btn_change_template: Button = %BtnChangeTemplate +@onready var copy_process_container: MarginContainer = %CopyProcessContainer +@onready var copy_process_panel: PanelContainer = %CopyProcessPanel +@onready var copy_process_label: Label = %CopyProcessLabel +@onready var copy_process_bar: ProgressBar = %CopyProcessBar + + +#region Godot ###################################################################################### +func _ready() -> void: + # Connect to child signals + game_width.value_changed.connect(_update_scale) + game_height.value_changed.connect(_update_scale) + btn_change_template.pressed.connect(_show_template_change_confirmation) + + # Set default state + template_description_container.hide() + template_description.text = "" + + +#endregion + +#region Public ##################################################################################### +func on_about_to_popup() -> void: + welcome.add_theme_font_override("bold_font", get_theme_font("bold", "EditorFonts")) + scale_message.add_theme_font_override("normal_font", get_theme_font("main", "EditorFonts")) + scale_message.add_theme_font_override("bold_font", get_theme_font("bold", "EditorFonts")) + scale_message.add_theme_font_override("mono_font", get_theme_font("doc_source", "EditorFonts")) + gui_templates_title.add_theme_font_override("font", get_theme_font("bold", "EditorFonts")) + gui_templates_description.add_theme_font_override( + "font", get_theme_font("doc_source", "EditorFonts") + ) + template_description.add_theme_font_override("bold_font", get_theme_font("bold", "EditorFonts")) + + +func on_close() -> void: + if _is_closing: + return + + _is_closing = true + + ProjectSettings.set_setting(PopochiuResources.DISPLAY_WIDTH, int(game_width.value)) + ProjectSettings.set_setting(PopochiuResources.DISPLAY_HEIGHT, int(game_height.value)) + ProjectSettings.set_setting(PopochiuResources.TEST_WIDTH, int(test_width.value)) + ProjectSettings.set_setting(PopochiuResources.TEST_HEIGHT, int(test_height.value)) + + match game_type.selected: + GameTypes.HD: + ProjectSettings.set_setting(PopochiuResources.STRETCH_MODE, "canvas_items") + ProjectSettings.set_setting(PopochiuResources.STRETCH_ASPECT, "expand") + + PopochiuConfig.set_pixel_art_textures(false) + GameTypes.RETRO_PIXEL: + ProjectSettings.set_setting(PopochiuResources.STRETCH_MODE, "canvas_items") + ProjectSettings.set_setting(PopochiuResources.STRETCH_ASPECT, "keep") + + PopochiuConfig.set_pixel_art_textures(true) + + if not PopochiuResources.is_setup_done() or not PopochiuResources.is_gui_set(): + PopochiuResources.set_data_value("setup", "done", true) + await _copy_template(true) + + get_parent().queue_free() + + +func define_content(show_welcome := false) -> void: + _is_closing = false + _selected_template = null + btn_change_template.hide() + copy_process_container.hide() + + scale_message.modulate = Color( + "#000" if "Light3D" in _es.get_setting("interface/theme/preset") else "#fff" + ) + scale_message.modulate.a = 0.8 + + copy_process_panel.add_theme_stylebox_override( + "panel", get_theme_stylebox("panel", "PopupPanel") + ) + + if not show_welcome: + welcome.text = "[center][b]POPOCHIU [shake]\\( u )3(u)/[/shake][/b][/center]" + btn_change_template.disabled = true + btn_change_template.show() + + # ---- Set initial values for fields --------------------------------------- + game_width.value = ProjectSettings.get_setting(PopochiuResources.DISPLAY_WIDTH) + game_height.value = ProjectSettings.get_setting(PopochiuResources.DISPLAY_HEIGHT) + test_width.value = ProjectSettings.get_setting(PopochiuResources.TEST_WIDTH) + test_height.value = ProjectSettings.get_setting(PopochiuResources.TEST_HEIGHT) + scale_message.text = _get_scale_message() + + game_type.selected = GameTypes.CUSTOM + + if ProjectSettings.get_setting(PopochiuResources.STRETCH_MODE) == "canvas_items": + match ProjectSettings.get_setting(PopochiuResources.STRETCH_ASPECT): + "expand": + game_type.selected = GameTypes.HD + "keep": + game_type.selected = GameTypes.RETRO_PIXEL + + # Load the list of templates + await _load_templates() + + _select_config_template() + + if show_welcome: + # Make Pixel the default game type checked during first run + game_type.selected = GameTypes.RETRO_PIXEL + + if PopochiuResources.GUI_GAME_SCENE in EditorInterface.get_open_scenes(): + _show_gui_warning() + + for btn: Button in gui_templates.get_children(): + btn.disabled = true + + template_description_container.hide() + + _update_size() + + +#endregion + +#region Private #################################################################################### +func _update_scale(_value: float) -> void: + scale_message.text = _get_scale_message() + + +func _get_scale_message() -> String: + var scale := Vector2(game_width.value, game_height.value) / PopochiuResources.RETRO_RESOLUTION + return SCALE_MESSAGE % [scale.x, scale.y] + + +func _on_gui_template_selected(button: GUITemplateButton) -> void: + for btn in gui_templates.get_children(): + if not btn is GUITemplateButton: continue + + (btn as GUITemplateButton).set_pressed_no_signal(false) + + button.set_pressed_no_signal(true) + _selected_template = button + + template_description.text = button.description + template_description_container.show() + + if PopochiuResources.get_data_value("setup", "done", false) == true: + btn_change_template.disabled = ( + _selected_template.name == PopochiuResources.get_data_value("ui", "template", "") + ) + + _update_size() + + +func _select_config_template() -> void: + var current_template: String = PopochiuResources.get_data_value("ui", "template", "") + + for btn: Button in gui_templates.get_children(): + if not btn is GUITemplateButton: continue + + btn.disabled = false + + if not btn.pressed.is_connected(_on_gui_template_selected): + btn.pressed.connect(_on_gui_template_selected.bind(btn)) + + if current_template == btn.name: + _on_gui_template_selected(btn) + + if not _selected_template: + _on_gui_template_selected(gui_templates.get_child(3)) + + +func _show_gui_warning() -> void: + var warning_dialog := AcceptDialog.new() + _setup_inner_dialog( + warning_dialog, + "GUI template warning", + "The GUI scene (gui.tscn) is currently opened in the Editor.\n\n" +\ + "In order to change the GUI template please close that scene first." + ) + + add_child(warning_dialog) + warning_dialog.popup_centered() + + +func _show_template_change_confirmation() -> void: + var confirmation_dialog := ConfirmationDialog.new() + _setup_inner_dialog( + confirmation_dialog, + "Confirm GUI template change", + "You changed the GUI template, making this will override any changes you made to the files\ + in res://game/gui/.\n\nAre you sure you want to make the change?" + ) + + confirmation_dialog.confirmed.connect( + func(): + confirmation_dialog.queue_free() + _copy_template() + ) + + add_child(confirmation_dialog) + confirmation_dialog.popup_centered() + + +func _setup_inner_dialog(dialog: Window, ttl: String, txt: String) -> void: + dialog.title = ttl + dialog.dialog_text = txt + dialog.dialog_autowrap = true + dialog.min_size.x = size.x - 64 + + +func _load_templates() -> void: + for idx in range(1, gui_templates.get_child_count()): + gui_templates.get_child(idx).free() + + # This is better than awating for SceneTree.process_frame + await get_tree().process_frame + + for dir_name: String in DirAccess.get_directories_at(PopochiuResources.GUI_TEMPLATES_FOLDER): + var template_info: PopochiuGUIInfo = load(PopochiuResources.GUI_TEMPLATES_FOLDER.path_join( + "%s/%s_gui_info.tres" % [dir_name, dir_name] + )) + + var button := GUITemplateButton.new() + button.toggle_mode = true + button.custom_minimum_size = Vector2.ONE * 128.0 + button.name = dir_name.to_pascal_case() + button.text = ( + dir_name.capitalize() if template_info.title.is_empty() else template_info.title + ) + button.description = template_info.description + button.icon = template_info.icon + button.icon_alignment = HORIZONTAL_ALIGNMENT_CENTER + button.vertical_icon_alignment = VERTICAL_ALIGNMENT_TOP + button.expand_icon = true + button.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST + button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND + + gui_templates.add_child(button) + + +func _copy_template(is_first_copy := false) -> void: + get_parent().get_ok_button().disabled = true + + $PanelContainer/VBoxContainer.modulate.a = COPY_ALPHA + copy_process_label.text = "" + copy_process_bar.value = 0 + + PopochiuGuiTemplatesHelper.copy_gui_template( + _selected_template.name, _template_copy_progressed, _template_copy_completed + ) + + copy_process_container.show() + + # if true, make the popup visible so devs can see the copy process feedback + if is_first_copy: + get_parent().visible = true + await template_copy_completed + + +func _template_copy_progressed(value: int, message: String) -> void: + copy_process_label.text = message + copy_process_bar.value = value + + +func _template_copy_completed() -> void: + get_parent().get_ok_button().disabled = false + btn_change_template.disabled = true + $PanelContainer/VBoxContainer.modulate.a = 1 + + copy_process_container.hide() + template_copy_completed.emit() + + +func _update_size() -> void: + # Wait for the popup content to be rendered in order to get its size + await get_tree().create_timer(0.05).timeout + + custom_minimum_size = get_child(0).size + size_calculated.emit() + + +#endregion diff --git a/addons/popochiu/editor/popups/setup/setup.gd.uid b/addons/popochiu/editor/popups/setup/setup.gd.uid new file mode 100644 index 0000000..223547b --- /dev/null +++ b/addons/popochiu/editor/popups/setup/setup.gd.uid @@ -0,0 +1 @@ +uid://bnrugyidqycwj diff --git a/addons/popochiu/editor/popups/setup/setup.tscn b/addons/popochiu/editor/popups/setup/setup.tscn new file mode 100644 index 0000000..80286c5 --- /dev/null +++ b/addons/popochiu/editor/popups/setup/setup.tscn @@ -0,0 +1,307 @@ +[gd_scene load_steps=5 format=3 uid="uid://c3r8juwutb1gr"] + +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/setup/setup.gd" id="1_vjboj"] +[ext_resource type="Script" path="res://addons/popochiu/editor/popups/setup/gui_template_button.gd" id="3_jf6nd"] +[ext_resource type="Texture2D" uid="uid://c00kw8v34vtsb" path="res://addons/popochiu/icons/ico_custom.png" id="5_joicf"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ntnwv"] +content_margin_left = 8.0 +content_margin_top = 8.0 +content_margin_right = 8.0 +content_margin_bottom = 8.0 +bg_color = Color(0.698039, 0.698039, 0.698039, 1) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 + +[node name="Setup" type="Control"] +custom_minimum_size = Vector2(560, 608) +layout_mode = 3 +anchors_preset = 0 +offset_right = 560.0 +offset_bottom = 608.0 +script = ExtResource("1_vjboj") + +[node name="PanelContainer" type="PanelContainer" parent="."] +custom_minimum_size = Vector2(560, 608) +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 607.0 +grow_horizontal = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +layout_mode = 2 +theme_override_constants/separation = 12 + +[node name="Welcome" type="RichTextLabel" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +bbcode_enabled = true +text = "[center]Welcome to [shake]Popochiu \\( o )3(o)/[/shake][/center] + +This popup will appear automatically just this time. You can open it later with the Setup button at the bottom of Popochiu's dock." +fit_content = true +scroll_active = false +meta_underlined = false +hint_underlined = false + +[node name="WelcomeSeparator" type="HSeparator" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="SizeContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +layout_mode = 2 + +[node name="GameSize" type="Label" parent="PanelContainer/VBoxContainer/SizeContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +tooltip_text = "The width and height of the game's window. Changing this will update display/window/size/width and display/window/size/height." +mouse_filter = 0 +text = "Native game resolution" + +[node name="VBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/SizeContainer"] +layout_mode = 2 + +[node name="WidthContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/SizeContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="GameWidth" type="SpinBox" parent="PanelContainer/VBoxContainer/SizeContainer/VBoxContainer/WidthContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 64.0 +max_value = 1440.0 +value = 320.0 +rounded = true +allow_greater = true + +[node name="Width" type="Label" parent="PanelContainer/VBoxContainer/SizeContainer/VBoxContainer/WidthContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "width" + +[node name="HeightContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/SizeContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="GameHeight" type="SpinBox" parent="PanelContainer/VBoxContainer/SizeContainer/VBoxContainer/HeightContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 64.0 +max_value = 1440.0 +value = 180.0 +rounded = true +allow_greater = true + +[node name="Height" type="Label" parent="PanelContainer/VBoxContainer/SizeContainer/VBoxContainer/HeightContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "height" + +[node name="ScaleMessage" type="RichTextLabel" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +bbcode_enabled = true +fit_content = true +scroll_active = false + +[node name="TestContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +layout_mode = 2 + +[node name="TestSize" type="Label" parent="PanelContainer/VBoxContainer/TestContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +tooltip_text = "The width and height of the game's test window. Changing this will update display/window/size/test_width and display/window/size/test_height." +mouse_filter = 0 +text = "Playing window resolution" + +[node name="VBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/TestContainer"] +layout_mode = 2 + +[node name="WidthContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/TestContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="TestWidth" type="SpinBox" parent="PanelContainer/VBoxContainer/TestContainer/VBoxContainer/WidthContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 1440.0 +value = 640.0 +rounded = true +allow_greater = true + +[node name="Width" type="Label" parent="PanelContainer/VBoxContainer/TestContainer/VBoxContainer/WidthContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "width" + +[node name="HeightContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/TestContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="TestHeight" type="SpinBox" parent="PanelContainer/VBoxContainer/TestContainer/VBoxContainer/HeightContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 1440.0 +value = 360.0 +rounded = true +allow_greater = true + +[node name="Height" type="Label" parent="PanelContainer/VBoxContainer/TestContainer/VBoxContainer/HeightContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "height" + +[node name="TypeContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Type" type="Label" parent="PanelContainer/VBoxContainer/TypeContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "The type of game modifies the stretch mode and the default preset for importing 2D images. + +Default: No stretch. Texture2D import preset set to: 2D. +2D: Stretch mode set to 2D and stretch aspect set to keep. Texture2D import preset set to: 2D. +Pixel: Stretch mode set to 2D and stretch aspect set to keep. Texture2D import preset set to: 2D Pixel." +mouse_filter = 0 +text = "Game type" + +[node name="GameType" type="OptionButton" parent="PanelContainer/VBoxContainer/TypeContainer"] +unique_name_in_owner = true +layout_mode = 2 +item_count = 3 +popup/item_0/text = "Custom" +popup/item_1/text = "2D" +popup/item_1/id = 1 +popup/item_2/text = "Pixel" +popup/item_2/id = 2 + +[node name="TemplateSeparator" type="HSeparator" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="GUITemplatesPanel" type="PanelContainer" parent="PanelContainer/VBoxContainer"] +layout_mode = 2 + +[node name="GUITemplatesContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel"] +layout_mode = 2 + +[node name="GUITemplatesTitle" type="Label" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(544, 0) +layout_mode = 2 +text = "GUI Template" +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="GUITemplatesDescription" type="Label" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(544, 0) +layout_mode = 2 +text = "Select a template to define the look and feel of your game. Click each button to see a short description." +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_ntnwv") + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer"] +layout_mode = 2 + +[node name="GUITemplates" type="HBoxContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +alignment = 1 + +[node name="Custom" type="Button" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer/GUITemplates"] +visible = false +texture_filter = 1 +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +mouse_default_cursor_shape = 2 +toggle_mode = true +text = "Custom" +icon = ExtResource("5_joicf") +icon_alignment = 1 +vertical_icon_alignment = 0 +expand_icon = true +script = ExtResource("3_jf6nd") +description = "You are an adventorous developer who wants to implement each own Graphic Interface. [shake]You rock!!![/shake]" + +[node name="TemplateDescriptionContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer/TemplateDescriptionContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="TemplateDescription" type="RichTextLabel" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer/TemplateDescriptionContainer/MarginContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +bbcode_enabled = true +fit_content = true +scroll_active = false + +[node name="BtnChangeTemplate" type="Button" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 48) +layout_mode = 2 +size_flags_horizontal = 4 +mouse_default_cursor_shape = 2 +text = "Use this GUI Template" + +[node name="CopyProcessContainer" type="MarginContainer" parent="PanelContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_constants/margin_left = 0 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_right = 0 +theme_override_constants/margin_bottom = 0 + +[node name="Overlay" type="ColorRect" parent="PanelContainer/CopyProcessContainer"] +layout_mode = 2 +color = Color(0, 0, 0, 0) + +[node name="CopyProcessPanel" type="PanelContainer" parent="PanelContainer/CopyProcessContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/CopyProcessContainer/CopyProcessPanel"] +layout_mode = 2 +size_flags_vertical = 4 + +[node name="CopyProcessBar" type="ProgressBar" parent="PanelContainer/CopyProcessContainer/CopyProcessPanel/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 +value = 50.0 + +[node name="CopyProcessLabel" type="Label" parent="PanelContainer/CopyProcessContainer/CopyProcessPanel/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Starting GUI template application" +horizontal_alignment = 1 +vertical_alignment = 1 +uppercase = true diff --git a/addons/popochiu/engine/audio_manager/audio_cue.gd b/addons/popochiu/engine/audio_manager/audio_cue.gd new file mode 100644 index 0000000..76eab40 --- /dev/null +++ b/addons/popochiu/engine/audio_manager/audio_cue.gd @@ -0,0 +1,179 @@ +@tool +class_name PopochiuAudioCue +extends Resource +## Used to play audio files with extra properties. +## +## You can set the pitch (with random values), volume, and audio bus, as well as specify whether +## it loops, and whether it is 2D positioned. + + +## The audio file to play. +@export var audio: AudioStream +## Whether the audio file will loop when played. +@export var loop := false : set = set_loop +## Whether this audio cue uses a 2D position. +@export var is_2d := false +## Whether the audio can be played simultaneously with other instances of itself. Especially useful +## for audio cues set in a loop (where [member loop] is [code]true[/code]). +@export var can_play_simultaneous := true +## The pitch value (in semitones) to use when playing the audio file. +@export var pitch := 0.0 +## The volume to use when playing the audio file. +@export var volume := 0.0 +## The range of values to use for randomly changing the pitch of the audio file when played. +@export var rnd_pitch := Vector2.ZERO +## The range of values to use to randomly changing the volume of the audio file when played. +@export var rnd_volume := Vector2.ZERO +## Maximum distance from which the audio file is still hearable. This only works if [member is_2d] +## is [code]true[/code]. +@export var max_distance := 2000 +## The audio bus in which the audio file will be played. +@export var bus := "Master" + + +#region Public ##################################################################################### +## Plays this audio cue with a fade that lasts [param duration] seconds. If [param wait_to_end] is +## set to [code]true[/code], the function will wait for the audio to finish. You can specify the +## starting volume with [param from] and the target volume with [param to], as well as the +## [param position_2d] of the [AudioStreamPlayer] or [AudioStreamPlayer2D] that will play the audio +## file. +func fade( + duration := 1.0, wait_to_end := false, from := -80.0, to := INF, position_2d := Vector2.ZERO +) -> void: + if wait_to_end: + await PopochiuUtils.e.am.play_fade_cue(resource_name, duration, from, to, position_2d, true) + else: + PopochiuUtils.e.am.play_fade_cue(resource_name, duration, from, to, position_2d) + + +## Plays this audio cue with a fade that lasts [param duration] seconds. If [param wait_to_end] is +## set to [code]true[/code], the function will wait for the audio to finish. You can specify the +## starting volume with [param from] and the target volume with [param to], as well as the +## [param position_2d] of the [AudioStreamPlayer] or [AudioStreamPlayer2D] that will play the audio +## file.[br][br] +## [i]This method is intended to be used inside a [method Popochiu.queue] of instructions.[/i] +func queue_fade( + duration := 1.0, wait_to_end := false, from := -80.0, to := INF, position_2d := Vector2.ZERO +) -> Callable: + return func (): + if wait_to_end: + await fade(duration, wait_to_end, from, to, position_2d) + else: + fade(duration, wait_to_end, from, to, position_2d) + await PopochiuUtils.e.get_tree().process_frame + + +## Stops the audio cue, with an optional fade effect lasting [param fade_duration] seconds. +func stop(fade_duration := 0.0) -> void: + PopochiuUtils.e.am.stop(resource_name, fade_duration) + + +## Stops the audio cue, with an optional fade effect lasting [param fade_duration] seconds.[br][br] +## [i]This method is intended to be used inside a [method Popochiu.queue] of instructions.[/i] +func queue_stop(fade_duration := 0.0) -> Callable: + return func (): + stop(fade_duration) + await PopochiuUtils.e.get_tree().process_frame + + +## Changes the [member AudioStreamPlayer.pitch_scale] of the [AudioStreamPlayer] playing the audio +## file associated with this audio cue to [param pitch]. If the audio was played with a 2D position, +## then [member AudioStreamPlayer2D.pitch_scale] will be affected. +func change_stream_pitch(pitch := 0.0) -> void: + PopochiuUtils.e.am.change_cue_pitch(resource_name, pitch) + + +## Changes the [member AudioStreamPlayer.volume_db] of the [AudioStreamPlayer] playing the audio +## file associated with this audio cue to [param volume]. If the audio was played with a 2D +## position, then [member AudioStreamPlayer2D.volume_db] will be affected. +func change_stream_volume(volume := 0.0) -> void: + PopochiuUtils.e.am.change_cue_volume(resource_name, volume) + + +## Returns the value of [member AudioStreamPlayer.pitch_scale] to be applied to the +## [AudioStreamPlayer] playing the audio file associated with this audio cue. If the audio was +## played with a 2D position, then [member AudioStreamPlayer2D.volume_db] will be affected. +func get_pitch_scale() -> float: + var p := PopochiuUtils.a.semitone_to_pitch(pitch) + + if rnd_pitch != Vector2.ZERO: + p = _get_rnd_pitch() + + return p + + +## Returns the playback position of this audio cue. +func get_cue_playback_position() -> float: + return PopochiuUtils.e.am.get_cue_playback_position(resource_name) + + +## Maps [param values] to the properties of this audio cue. This is used by TabAudio when changing +## the script of the audio cue to one of the types: [AudioCueSound] or [AudioCueMusic]. +func set_values(values: Dictionary) -> void: + resource_name = values.resource_name + audio = values.audio + loop = values.loop + is_2d = values.is_2d + pitch = values.pitch + volume = values.volume + rnd_pitch = values.rnd_pitch + rnd_volume = values.rnd_volume + max_distance = values.max_distance + bus = values.bus + + +## Returns the properties of this audio cue as a [Dictionary]. This is used by TabAudio when +## changing the script of the audio cue to one of the types: [AudioCueSound] or [AudioCueMusic]. +func get_values() -> Dictionary: + return { + resource_name = resource_name, + audio = audio, + loop = loop, + is_2d = is_2d, + pitch = pitch, + volume = volume, + rnd_pitch = rnd_pitch, + rnd_volume = rnd_volume, + max_distance = max_distance, + bus = bus + } + + +## Returns [code]true[/code] if playing. +func is_playing() -> bool: + return PopochiuUtils.a.is_playing_cue(resource_name) + + +#endregion + +#region SetGet ##################################################################################### +func set_loop(value: bool) -> void: + loop = value + + if not audio: return + + match audio.get_class(): + 'AudioStreamOggVorbis', 'AudioStreamMP3': + audio.loop = value + 'AudioStreamWAV': + (audio as AudioStreamWAV).loop_mode = ( + AudioStreamWAV.LOOP_FORWARD if value else AudioStreamWAV.LOOP_DISABLED + ) + + notify_property_list_changed() + + +#endregion + +#region Private #################################################################################### +func _get_rnd_pitch() -> float: + randomize() + return PopochiuUtils.a.semitone_to_pitch(pitch + randf_range(rnd_pitch.x, rnd_pitch.y)) + + +func _get_rnd_volume() -> float: + randomize() + return volume + randf_range(rnd_volume.x, rnd_volume.y) + + +#endregion diff --git a/addons/popochiu/engine/audio_manager/audio_cue.gd.uid b/addons/popochiu/engine/audio_manager/audio_cue.gd.uid new file mode 100644 index 0000000..24cd0be --- /dev/null +++ b/addons/popochiu/engine/audio_manager/audio_cue.gd.uid @@ -0,0 +1 @@ +uid://btinlvcono726 diff --git a/addons/popochiu/engine/audio_manager/audio_cue_container.gd b/addons/popochiu/engine/audio_manager/audio_cue_container.gd new file mode 100644 index 0000000..0ba7535 --- /dev/null +++ b/addons/popochiu/engine/audio_manager/audio_cue_container.gd @@ -0,0 +1,2 @@ +extends Resource + diff --git a/addons/popochiu/engine/audio_manager/audio_cue_container.gd.uid b/addons/popochiu/engine/audio_manager/audio_cue_container.gd.uid new file mode 100644 index 0000000..1bce9a6 --- /dev/null +++ b/addons/popochiu/engine/audio_manager/audio_cue_container.gd.uid @@ -0,0 +1 @@ +uid://7s3126auywka diff --git a/addons/popochiu/engine/audio_manager/audio_cue_music.gd b/addons/popochiu/engine/audio_manager/audio_cue_music.gd new file mode 100644 index 0000000..ac2b492 --- /dev/null +++ b/addons/popochiu/engine/audio_manager/audio_cue_music.gd @@ -0,0 +1,23 @@ +@tool +class_name AudioCueMusic +extends PopochiuAudioCue +## A specific type of [PopochiuAudioCue] designed for playing music. + + +#region Public ##################################################################################### +## Plays this audio cue. It can fade for [param fade_duration] seconds, and you can change the track +## starting position in seconds with [param music_position]. +func play(fade_duration := 0.0, music_position := 0.0) -> void: + PopochiuUtils.e.am.play_music_cue(resource_name, fade_duration, music_position) + + +## Plays this audio cue. It can fade for [param fade_duration] seconds, and you can change the track +## starting position in seconds with [param music_position].[br][br] +## [i]This method is intended to be used inside a [method Popochiu.queue] of instructions.[/i] +func queue_play(fade_duration := 0.0, music_position := 0.0) -> Callable: + return func (): + await play(fade_duration, music_position) + await PopochiuUtils.e.get_tree().process_frame + + +#endregion diff --git a/addons/popochiu/engine/audio_manager/audio_cue_music.gd.uid b/addons/popochiu/engine/audio_manager/audio_cue_music.gd.uid new file mode 100644 index 0000000..6a6dd4c --- /dev/null +++ b/addons/popochiu/engine/audio_manager/audio_cue_music.gd.uid @@ -0,0 +1 @@ +uid://bccg7ywc586ng diff --git a/addons/popochiu/engine/audio_manager/audio_cue_sound.gd b/addons/popochiu/engine/audio_manager/audio_cue_sound.gd new file mode 100644 index 0000000..9df32e6 --- /dev/null +++ b/addons/popochiu/engine/audio_manager/audio_cue_sound.gd @@ -0,0 +1,31 @@ +@tool +class_name AudioCueSound +extends PopochiuAudioCue +## A specific type of [PopochiuAudioCue] designed for playing sounds. + + +#region Public ##################################################################################### +## Plays this audio cue. If [param wait_to_end] is set to [code]true[/code], the function will pause +## until the audio clip finishes. You can play the file from a specific [param position_2d] in the +## scene if [member PopochiuAudioCue.is_2d] is [code]true[/code]. +func play(wait_to_end := false, position_2d := Vector2.ZERO) -> void: + if wait_to_end: + await PopochiuUtils.e.am.play_sound_cue(resource_name, position_2d, true) + else: + PopochiuUtils.e.am.play_sound_cue(resource_name, position_2d) + + +## Plays this audio cue. If [param wait_to_end] is set to [code]true[/code], the function will pause +## until the audio clip finishes. You can play the file from a specific [param position_2d] in the +## scene if [member PopochiuAudioCue.is_2d] is [code]true[/code].[br][br] +## [i]This method is intended to be used inside a [method Popochiu.queue] of instructions.[/i] +func queue_play(wait_to_end := false, position_2d := Vector2.ZERO) -> Callable: + return func (): + if wait_to_end: + await play(true, position_2d) + else: + play(false, position_2d) + await PopochiuUtils.e.get_tree().process_frame + + +#endregion diff --git a/addons/popochiu/engine/audio_manager/audio_cue_sound.gd.uid b/addons/popochiu/engine/audio_manager/audio_cue_sound.gd.uid new file mode 100644 index 0000000..5888beb --- /dev/null +++ b/addons/popochiu/engine/audio_manager/audio_cue_sound.gd.uid @@ -0,0 +1 @@ +uid://cqbmt4xruu8eo diff --git a/addons/popochiu/engine/audio_manager/audio_manager.gd b/addons/popochiu/engine/audio_manager/audio_manager.gd new file mode 100644 index 0000000..c87f6c1 --- /dev/null +++ b/addons/popochiu/engine/audio_manager/audio_manager.gd @@ -0,0 +1,403 @@ +class_name PopochiuAudioManager +extends Node +## Handles playing audio using [PopochiuAudioCue]s. +## +## It plays sound effects and music using [AudioStreamPlayer] or [AudioStreamPlayer2D], creating +## these nodes at runtime if needed. By default, it has 6 nodes for positional streams and 5 for +## playing non-positional streams.[br][br] +## The [b]PopochiuAudioManager[/b] is loaded as a child of [Popochiu] when the game starts. + +## Used to mark stream players created at runtime that should be [method Node.free] when they are +## no longer needed. +const TEMP_PLAYER := "temporal" +## Specifies the path where the volume configuration for the audio buses used in the game is stored. +const SETTINGS_PATH = "user://audio_settings.save" + +## Used to convert the value of the pitch set on [member PopochiuAudioCue.pitch] to the +## corresponding value needed for the [code]pitch_scale[/code] property of the audio stream players. +var twelfth_root_of_two := pow(2, (1.0 / 12)) +## Stores the volume values for each of the audio buses used by the game. +var volume_settings := {} + +var _mx_cues := {} +var _sfx_cues := {} +var _vo_cues := {} +var _ui_cues := {} +var _active := {} +var _all_in_one := {} +# Serves as a map that stores an AudioStreamPlayer/AudioStreamPlayer2D and the tween used to fade +# its volume +var _fading_sounds := {} +var _dflt_volumes := {} + + +#region Godot ###################################################################################### +func _ready() -> void: + if Engine.is_editor_hint(): return + + for bus_idx in range(AudioServer.get_bus_count()): + var bus_name = AudioServer.get_bus_name(bus_idx) + volume_settings[bus_name] = AudioServer.get_bus_volume_db(bus_idx) + + for arr in ["mx_cues", "sfx_cues", "vo_cues", "ui_cues"]: + for rp in PopochiuResources.get_data_value("audio", arr, []): + var ac: PopochiuAudioCue = load(rp) + + self["_%s" % arr][ac.resource_name] = ac + _all_in_one[ac.resource_name] = ac + _dflt_volumes[ac.resource_name] = ac.volume + + +#endregion + +#region Public ##################################################################################### +## Searches for the [PopochiuAudioCue] identified by [param cue_name] among the cues that are NOT +## part of the music group and plays it. You can set a [param position_2d] to play it positionally. +## If [param wait_to_end] is set to [code]true[/code], the function will pause until the audio +## finishes. +func play_sound_cue(cue_name := "", position_2d := Vector2.ZERO, wait_to_end = null) -> Node: + var stream_player: Node = null + + if _all_in_one.has(cue_name.to_lower()): + var cue: PopochiuAudioCue = _all_in_one[cue_name.to_lower()] + stream_player = _play(cue, position_2d) + else: + PopochiuUtils.print_error("Sound not found: " + cue_name) + + if wait_to_end != null: + await get_tree().process_frame + + return null + + if wait_to_end == true and stream_player: + await stream_player.finished + elif wait_to_end == false: + await get_tree().process_frame + + return stream_player + + +## Searches for the [PopochiuAudioCue] identified by [param cue_name] among the cues that are part +## of the music group and plays it. It can fade for [param fade_duration] seconds, and you can start +## playing it from a given [param music_position] in seconds. +func play_music_cue(cue_name: String, fade_duration := 0.0, music_position := 0.0) -> Node: + var stream_player: Node = null + + if _active.has(cue_name): + return _active[cue_name].players[0] + + if _mx_cues.has(cue_name.to_lower()): + var cue: PopochiuAudioCue = _mx_cues[cue_name.to_lower()] + # NOTE: fixes #27 AudioCues were losing the volume set in editor when + # played with a fade + cue.volume = _dflt_volumes[cue_name.to_lower()] + if fade_duration > 0.0: + stream_player = _fade_in( + cue, + Vector2.ZERO, + fade_duration, + -80.0, + cue.volume, + music_position + ) + else: + stream_player = _play(cue, Vector2.ZERO, music_position) + else: + PopochiuUtils.print_error("Music not found: " + cue_name) + + return stream_player + + +## Plays the [PopochiuAudioCue] identified by [param cue_name] using a fade that will last +## [param duration] seconds. Specify the starting volume with [param from] and the target volume +## with [param to]. You can play the audio positionally with [param position_2d] and wait for it +## to finish if [param wait_to_end] is set to [code]true[/code]. +func play_fade_cue( + cue_name := "", + duration := 1.0, + from := -80.0, + to := INF, + position_2d := Vector2.ZERO, + wait_to_end = null +) -> Node: + var stream_player: Node = null + + if _all_in_one.has(cue_name.to_lower()): + var cue: PopochiuAudioCue = _all_in_one[cue_name.to_lower()] + stream_player = _fade_in(cue, position_2d, duration, from, to if to != INF else cue.volume) + else: + PopochiuUtils.print_error("Sound to fade not found " + cue_name) + + if wait_to_end != null: + await get_tree().process_frame + + return null + + if wait_to_end == true and stream_player: + await stream_player.finished + elif wait_to_end == false: + await get_tree().process_frame + + return stream_player + + +## Stops the [PopochiuAudioCue] identified by [param cue_name]. It can use a fade effect that will +## last [param fade_duration] seconds. +func stop(cue_name: String, fade_duration := 0.0) -> void: + if _active.has(cue_name): + var stream_player: Node = (_active[cue_name].players as Array).front() + + if is_instance_valid(stream_player): + if fade_duration > 0.0: + _fade_sound( + cue_name, fade_duration, stream_player.volume_db, -80.0 + ) + else: + stream_player.stop() + # Always emit the signal since it won't be emitted if the audio + # file haven't reach the end yet + stream_player.finished.emit() + else: + _active.erase(cue_name) + + +## Returns the playback position of the [PopochiuAudioCue] identified by [param cue_name]. +func get_cue_playback_position(cue_name: String) -> float: + if not _active.has(cue_name): return -1.0 + + var stream_player: Node = (_active[cue_name].players as Array).front() + + if is_instance_valid(stream_player): + return stream_player.get_playback_position() + + return -1.0 + + +## Changes the [code]pitch_scale[/code] of the [PopochiuAudioCue] identified by [param cue_name] to +## the value set (in semitones) in [param pitch]. +func change_cue_pitch(cue_name: String, pitch := 0.0) -> void: + if not _active.has(cue_name): return + + var stream_player: Node = (_active[cue_name].players as Array).front() + stream_player.set_pitch_scale(_semitone_to_pitch(pitch)) + + +## Changes the [code]volume_db[/code] of the [PopochiuAudioCue] identified by [param cue_name] to +## the value set in [param volume]. +func change_cue_volume(cue_name: String, volume := 0.0) -> void: + if not _active.has(cue_name): return + + var stream_player: Node = (_active[cue_name].players as Array).front() + stream_player.volume_db = volume + + +## Sets [param value] as the volume of the audio bus identified with [param bus_name]. +func set_bus_volume_db(bus_name: String, value: float) -> void: + if volume_settings.has(bus_name): + volume_settings[bus_name] = value + AudioServer.set_bus_volume_db( + AudioServer.get_bus_index(bus_name), volume_settings[bus_name] + ) + + save_sound_settings() + + +## Saves in the file at [constant SETTINGS_PATH] the volume values of all the audio buses. +func save_sound_settings(): + var file = FileAccess.open(SETTINGS_PATH, FileAccess.WRITE) + + if file == null: + PopochiuUtils.print_error("Error opening file: " + SETTINGS_PATH) + else: + file.store_var(volume_settings) + file.close() + + +## Loads the volume values stored at [constant SETTINGS_PATH] for all the audio buses. +func load_sound_settings(): + var file = FileAccess.open(SETTINGS_PATH, FileAccess.READ) + + if file: + volume_settings = file.get_var(true) + file.close() + for bus_idx in range(AudioServer.get_bus_count()): + var bus_name = AudioServer.get_bus_name(bus_idx) + if volume_settings.has(bus_name): + AudioServer.set_bus_volume_db( + AudioServer.get_bus_index(bus_name), + volume_settings[bus_name] + ) + else: + volume_settings[bus_name] = AudioServer.get_bus_volume_db(bus_idx) + + +## Returns [code]true[/code] if the [PopochiuAudioCue] identified by [param cue_name] is playing. +func is_playing_cue(cue_name: String) -> bool: + return get_cue_playback_position(cue_name) > -1 + + +#endregion + +#region Private #################################################################################### +# Calculates the [code]pitch_scale[/code] value of [param pitch], which is in semitones. +func _semitone_to_pitch(pitch: float) -> float: + return pow(twelfth_root_of_two, pitch) + + +# Plays the sound and assigns it to a free AudioStreamPlayer, or creates one if there are no more. +func _play( + cue: PopochiuAudioCue, position := Vector2.ZERO, from_position := 0.0 +) -> Node: + var player: Node = null + + if cue.is_2d: + player = _get_free_stream($Positional) + + if not is_instance_valid(player): + player = AudioStreamPlayer2D.new() + player.set_meta(TEMP_PLAYER, true) + $Active.add_child(player) + + (player as AudioStreamPlayer2D).stream = cue.audio + (player as AudioStreamPlayer2D).pitch_scale = cue.get_pitch_scale() + (player as AudioStreamPlayer2D).volume_db = cue.volume + (player as AudioStreamPlayer2D).max_distance = cue.max_distance + (player as AudioStreamPlayer2D).position = position + else: + player = _get_free_stream($Generic) + + if not is_instance_valid(player): + player = AudioStreamPlayer.new() + player.set_meta(TEMP_PLAYER, true) + $Active.add_child(player) + + (player as AudioStreamPlayer).stream = cue.audio + (player as AudioStreamPlayer).pitch_scale = cue.get_pitch_scale() + (player as AudioStreamPlayer).volume_db = cue.volume + + var cue_name: String = cue.resource_name + + player.bus = cue.bus + player.play(from_position) + + if not player.finished.is_connected(_on_audio_stream_player_finished): + player.finished.connect(_on_audio_stream_player_finished.bind(player, cue_name, 0)) + + if _active.has(cue_name): + _active[cue_name].players.append(player) + + # NOTE: Stop the previous stream player created to play the audio cue + # that is in loop to avoid having more than one sound playing. + if not _active[cue_name].can_play_simultaneous: + stop(cue_name) + else: + _active[cue_name] = { + players = [player], + loop = cue.loop, + can_play_simultaneous = cue.can_play_simultaneous + } + + return player + + +func _get_free_stream(group: Node): + return _reparent(group, $Active, 0) + + +# Reassigns the [AudioStreamPlayer] to its original group when it finishes so it can be available +# for being used again. +func _on_audio_stream_player_finished( + stream_player: Node, cue_name: String, _debug_idx: int +) -> void: + if stream_player.has_meta(TEMP_PLAYER): + stream_player.queue_free() + elif stream_player is AudioStreamPlayer: + _reparent($Active, $Generic, stream_player.get_index()) + else: + _reparent($Active, $Positional, stream_player.get_index()) + + if _active.has(cue_name): + var players: Array = _active[cue_name].players + for idx in players.size(): + if players[idx].get_instance_id() == stream_player.get_instance_id(): + players.remove_at(idx) + break + + if players.is_empty(): + _active.erase(cue_name) + + if not stream_player.finished.is_connected(_on_audio_stream_player_finished): + stream_player.finished.connect(_on_audio_stream_player_finished) + + +func _reparent(source: Node, target: Node, child_idx: int) -> Node: + if not is_instance_valid(source) or source.get_children().is_empty(): + return null + + var node_to_reparent: Node = source.get_child(child_idx) + + if not is_instance_valid(node_to_reparent): + return null + + node_to_reparent.reparent(target) + + return node_to_reparent + + +func _fade_in( + cue: PopochiuAudioCue, + position: Vector2, + duration := 1.0, + from := -80.0, + to := 0.0, + from_position := 0.0 +) -> Node: + if cue.audio.get_instance_id() in _fading_sounds: + from = _fading_sounds[cue.audio.get_instance_id()].stream.volume_db + + var tween: Tween = _fading_sounds[cue.audio.get_instance_id()].tween + # Stop the tween only of the sound that is fading + + if is_instance_valid(tween) and tween.is_running(): + tween.kill() + + _fading_sounds[cue.audio.get_instance_id()].finished.emit() + _fading_sounds.erase(cue.audio.get_instance_id()) + + cue.volume = from + + var stream_player: Node = _play(cue, position, from_position) + + if stream_player: + _fade_sound(cue.resource_name, duration, from, to) + else: + cue.volume = to + + return stream_player + + +func _fade_sound(cue_name: String, duration = 1, from = 0, to = 0) -> void: + var stream_player: Node = (_active[cue_name].players as Array).front() + + if _fading_sounds.has(stream_player.stream.get_instance_id()): + _fading_sounds[stream_player.stream.get_instance_id()].tween.kill() + + var t := create_tween().set_ease(Tween.EASE_IN_OUT) + t.finished.connect(_fadeout_finished.bind(stream_player, t)) + t.tween_property(stream_player, "volume_db", to, duration).from(from) + + if from > to : + _fading_sounds[stream_player.stream.get_instance_id()] = { + stream = stream_player, + tween = t + } + + +func _fadeout_finished(stream_player: Node, tween: Tween) -> void: + if stream_player.stream.get_instance_id() in _fading_sounds : + _fading_sounds.erase(stream_player.stream.get_instance_id()) + stream_player.stop() + tween.finished.disconnect(_fadeout_finished) + + +#endregion diff --git a/addons/popochiu/engine/audio_manager/audio_manager.gd.uid b/addons/popochiu/engine/audio_manager/audio_manager.gd.uid new file mode 100644 index 0000000..5524f5b --- /dev/null +++ b/addons/popochiu/engine/audio_manager/audio_manager.gd.uid @@ -0,0 +1 @@ +uid://bngbmwj65yxut diff --git a/addons/popochiu/engine/audio_manager/audio_manager.tscn b/addons/popochiu/engine/audio_manager/audio_manager.tscn new file mode 100644 index 0000000..05a4ec0 --- /dev/null +++ b/addons/popochiu/engine/audio_manager/audio_manager.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=2 format=3 uid="uid://ciufytcstpkcr"] + +[ext_resource type="Script" path="res://addons/popochiu/engine/audio_manager/audio_manager.gd" id="1_3dbpw"] + +[node name="AudioManager" type="Node"] +script = ExtResource("1_3dbpw") + +[node name="Positional" type="Node" parent="."] + +[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="Positional"] + +[node name="AudioStreamPlayer2D2" type="AudioStreamPlayer2D" parent="Positional"] + +[node name="AudioStreamPlayer2D3" type="AudioStreamPlayer2D" parent="Positional"] + +[node name="AudioStreamPlayer2D4" type="AudioStreamPlayer2D" parent="Positional"] + +[node name="AudioStreamPlayer2D5" type="AudioStreamPlayer2D" parent="Positional"] + +[node name="AudioStreamPlayer2D6" type="AudioStreamPlayer2D" parent="Positional"] + +[node name="Generic" type="Node" parent="."] + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="Generic"] + +[node name="AudioStreamPlayer2" type="AudioStreamPlayer" parent="Generic"] + +[node name="AudioStreamPlayer3" type="AudioStreamPlayer" parent="Generic"] + +[node name="AudioStreamPlayer4" type="AudioStreamPlayer" parent="Generic"] + +[node name="AudioStreamPlayer5" type="AudioStreamPlayer" parent="Generic"] + +[node name="Active" type="Node" parent="."] diff --git a/addons/popochiu/engine/cursor/cursor.gd b/addons/popochiu/engine/cursor/cursor.gd new file mode 100644 index 0000000..78c41cf --- /dev/null +++ b/addons/popochiu/engine/cursor/cursor.gd @@ -0,0 +1,168 @@ +class_name PopochiuCursor +extends CanvasLayer + +# TODO: Deprecate this? I'll leave it here while we merge the refactor for the +# creation popups because in those the Cursor.Type enum is used. +enum Type { + NONE, + ACTIVE, + DOWN, + IDLE, + LEFT, + LOOK, + RIGHT, + SEARCH, + TALK, + UP, + USE, + WAIT, +} + +@export var is_pixel_perfect := false + +var is_blocked := false + +@onready var main_cursor: AnimatedSprite2D = $MainCursor +@onready var secondary_cursor: Sprite2D = $SecondaryCursor + + +#region Godot ###################################################################################### +func _init() -> void: + Engine.register_singleton(&"Cursor", self) + + +func _ready(): + Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN) + + # Connect to autoload signals + PopochiuUtils.e.ready.connect(show_cursor) + + +func _process(delta): + var texture_size := (main_cursor.sprite_frames.get_frame_texture( + main_cursor.animation, + main_cursor.frame + ) as Texture2D).get_size() + + var mouse_position: Vector2 = main_cursor.get_global_mouse_position() + + if is_pixel_perfect: + # Thanks to @whyshchuck + main_cursor.position = Vector2i(mouse_position) + secondary_cursor.position = Vector2i(mouse_position) + else: + main_cursor.position = mouse_position + secondary_cursor.position = mouse_position + + if main_cursor.position.x < 1.0: + main_cursor.position.x = 1.0 + elif main_cursor.position.x > PopochiuUtils.e.width - 2.0: + main_cursor.position.x = PopochiuUtils.e.width - 2.0 + + if main_cursor.position.y < 1.0: + main_cursor.position.y = 1.0 + elif main_cursor.position.y > PopochiuUtils.e.height - 2.0: + main_cursor.position.y = PopochiuUtils.e.height - 2.0 + + +#endregion + +#region Public ##################################################################################### +func show_cursor(anim_name := "normal", ignore_block := false) -> void: + if not ignore_block and is_blocked: return + + if ( + not anim_name.is_empty() + and not main_cursor.sprite_frames.has_animation(anim_name) + ): + PopochiuUtils.print_error("Cursor has no animation: %s" % anim_name) + return + + main_cursor.play(anim_name) + main_cursor.show() + secondary_cursor.hide() + + +func set_secondary_cursor_texture(texture: Texture2D, ignore_block := false) -> void: + if not ignore_block and is_blocked: return + + secondary_cursor.texture = texture + + if PopochiuUtils.e.settings.scale_gui: + # Scale the cursor based the relation of the texture size compared to the main cursor + # texture size + secondary_cursor.scale = Vector2.ONE * ceil( + float(texture.get_height()) / float(get_cursor_height()) + ) + + secondary_cursor.show() + + +func remove_secondary_cursor_texture() -> void: + secondary_cursor.texture = null + + if PopochiuUtils.e.settings.scale_gui: + secondary_cursor.scale = PopochiuUtils.e.scale + + secondary_cursor.hide() + + +func toggle_visibility(is_visible: bool) -> void: + main_cursor.visible = is_visible + secondary_cursor.visible = is_visible + + +func block() -> void: + is_blocked = true + + +func unblock() -> void: + is_blocked = false + + +func scale_cursor(factor: Vector2) -> void: + secondary_cursor.scale = factor + main_cursor.scale = factor + + +func get_position() -> Vector2: + return secondary_cursor.position + + +func replace_frames(new_node: AnimatedSprite2D) -> void: + main_cursor.sprite_frames = new_node.sprite_frames + main_cursor.offset = new_node.offset + + +func hide_main_cursor() -> void: + main_cursor.hide() + + +func show_main_cursor() -> void: + main_cursor.show() + + +func hide_secondary_cursor() -> void: + secondary_cursor.hide() + + +func show_secondary_cursor() -> void: + secondary_cursor.show() + + +func get_type_name(idx: int) -> String: + return Type.keys()[idx].to_snake_case() + + +func get_cursor_height() -> int: + var height := 0 + + if main_cursor.visible: + height = main_cursor.sprite_frames.get_frame_texture(main_cursor.animation, 0).get_height() + elif secondary_cursor.visible: + height = secondary_cursor.texture.get_height() + + return height + + +#endregion diff --git a/addons/popochiu/engine/cursor/cursor.gd.uid b/addons/popochiu/engine/cursor/cursor.gd.uid new file mode 100644 index 0000000..74ca2e5 --- /dev/null +++ b/addons/popochiu/engine/cursor/cursor.gd.uid @@ -0,0 +1 @@ +uid://cus5ystyu850m diff --git a/addons/popochiu/engine/cursor/cursor.tscn b/addons/popochiu/engine/cursor/cursor.tscn new file mode 100644 index 0000000..21826be --- /dev/null +++ b/addons/popochiu/engine/cursor/cursor.tscn @@ -0,0 +1,211 @@ +[gd_scene load_steps=22 format=3 uid="uid://c2pqh7ajiuiy0"] + +[ext_resource type="Texture2D" uid="uid://bl3ecai6lvat1" path="res://addons/popochiu/engine/cursor/sprites/cursor.png" id="1"] +[ext_resource type="Script" path="res://addons/popochiu/engine/cursor/cursor.gd" id="1_n3epl"] + +[sub_resource type="AtlasTexture" id="10"] +atlas = ExtResource("1") +region = Rect2(0, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="11"] +atlas = ExtResource("1") +region = Rect2(32, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="12"] +atlas = ExtResource("1") +region = Rect2(64, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="15"] +atlas = ExtResource("1") +region = Rect2(96, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="16"] +atlas = ExtResource("1") +region = Rect2(128, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="4"] +atlas = ExtResource("1") +region = Rect2(192, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="5"] +atlas = ExtResource("1") +region = Rect2(224, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="18"] +atlas = ExtResource("1") +region = Rect2(256, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="17"] +atlas = ExtResource("1") +region = Rect2(288, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="9"] +atlas = ExtResource("1") +region = Rect2(160, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="2"] +atlas = ExtResource("1") +region = Rect2(320, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="3"] +atlas = ExtResource("1") +region = Rect2(352, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="14"] +atlas = ExtResource("1") +region = Rect2(384, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="19"] +atlas = ExtResource("1") +region = Rect2(416, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="6"] +atlas = ExtResource("1") +region = Rect2(448, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="7"] +atlas = ExtResource("1") +region = Rect2(480, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="13"] +atlas = ExtResource("1") +region = Rect2(512, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="8"] +atlas = ExtResource("1") +region = Rect2(544, 0, 32, 32) + +[sub_resource type="SpriteFrames" id="1"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("10") +}, { +"duration": 1.0, +"texture": SubResource("11") +}, { +"duration": 1.0, +"texture": SubResource("12") +}, { +"duration": 1.0, +"texture": SubResource("12") +}, { +"duration": 1.0, +"texture": SubResource("11") +}], +"loop": true, +"name": &"active", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("15") +}, { +"duration": 1.0, +"texture": SubResource("16") +}], +"loop": true, +"name": &"down", +"speed": 4.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("4") +}, { +"duration": 1.0, +"texture": SubResource("5") +}], +"loop": true, +"name": &"left", +"speed": 4.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("18") +}], +"loop": false, +"name": &"look", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("17") +}], +"loop": false, +"name": &"none", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("9") +}], +"loop": false, +"name": &"normal", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("2") +}, { +"duration": 1.0, +"texture": SubResource("3") +}], +"loop": true, +"name": &"right", +"speed": 4.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("14") +}], +"loop": false, +"name": &"search", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("19") +}], +"loop": false, +"name": &"talk", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("6") +}, { +"duration": 1.0, +"texture": SubResource("7") +}], +"loop": true, +"name": &"up", +"speed": 4.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("13") +}], +"loop": false, +"name": &"use", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("8") +}], +"loop": false, +"name": &"wait", +"speed": 5.0 +}] + +[node name="CursorLayer" type="CanvasLayer"] +layer = 100 +script = ExtResource("1_n3epl") + +[node name="MainCursor" type="AnimatedSprite2D" parent="."] +texture_filter = 1 +sprite_frames = SubResource("1") +animation = &"normal" + +[node name="SecondaryCursor" type="Sprite2D" parent="."] +texture_filter = 1 diff --git a/addons/popochiu/engine/cursor/cursor_animations.tres b/addons/popochiu/engine/cursor/cursor_animations.tres new file mode 100644 index 0000000..194b681 --- /dev/null +++ b/addons/popochiu/engine/cursor/cursor_animations.tres @@ -0,0 +1,211 @@ +[gd_resource type="SpriteFrames" load_steps=22 format=3 uid="uid://d0ny3mket72mf"] + +[ext_resource type="Texture2D" uid="uid://bl3ecai6lvat1" path="res://addons/popochiu/engine/cursor/sprites/cursor.png" id="1_qk45r"] +[ext_resource type="Texture2D" uid="uid://bocign602kxhh" path="res://addons/popochiu/engine/objects/gui/templates/simple_click/images/simple_click_cursor.png" id="2_05hav"] + +[sub_resource type="AtlasTexture" id="10"] +atlas = ExtResource("1_qk45r") +region = Rect2(0, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="11"] +atlas = ExtResource("1_qk45r") +region = Rect2(32, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="12"] +atlas = ExtResource("1_qk45r") +region = Rect2(64, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="15"] +atlas = ExtResource("1_qk45r") +region = Rect2(96, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="16"] +atlas = ExtResource("1_qk45r") +region = Rect2(128, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_t3qtx"] +atlas = ExtResource("2_05hav") +region = Rect2(576, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="4"] +atlas = ExtResource("1_qk45r") +region = Rect2(192, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="5"] +atlas = ExtResource("1_qk45r") +region = Rect2(224, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="18"] +atlas = ExtResource("1_qk45r") +region = Rect2(256, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="17"] +atlas = ExtResource("1_qk45r") +region = Rect2(288, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="9"] +atlas = ExtResource("1_qk45r") +region = Rect2(160, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="2"] +atlas = ExtResource("1_qk45r") +region = Rect2(320, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="3"] +atlas = ExtResource("1_qk45r") +region = Rect2(352, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="14"] +atlas = ExtResource("1_qk45r") +region = Rect2(384, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="19"] +atlas = ExtResource("1_qk45r") +region = Rect2(416, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="6"] +atlas = ExtResource("1_qk45r") +region = Rect2(448, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="7"] +atlas = ExtResource("1_qk45r") +region = Rect2(480, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="13"] +atlas = ExtResource("1_qk45r") +region = Rect2(512, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="8"] +atlas = ExtResource("1_qk45r") +region = Rect2(544, 0, 32, 32) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("10") +}, { +"duration": 1.0, +"texture": SubResource("11") +}, { +"duration": 1.0, +"texture": SubResource("12") +}, { +"duration": 1.0, +"texture": SubResource("12") +}, { +"duration": 1.0, +"texture": SubResource("11") +}], +"loop": true, +"name": &"active", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("15") +}, { +"duration": 1.0, +"texture": SubResource("16") +}], +"loop": true, +"name": &"down", +"speed": 4.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_t3qtx") +}], +"loop": true, +"name": &"gui", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("4") +}, { +"duration": 1.0, +"texture": SubResource("5") +}], +"loop": true, +"name": &"left", +"speed": 4.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("18") +}], +"loop": false, +"name": &"look", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("17") +}], +"loop": false, +"name": &"none", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("9") +}], +"loop": false, +"name": &"normal", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("2") +}, { +"duration": 1.0, +"texture": SubResource("3") +}], +"loop": true, +"name": &"right", +"speed": 4.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("14") +}], +"loop": false, +"name": &"search", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("19") +}], +"loop": false, +"name": &"talk", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("6") +}, { +"duration": 1.0, +"texture": SubResource("7") +}], +"loop": true, +"name": &"up", +"speed": 4.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("13") +}], +"loop": false, +"name": &"use", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("8") +}], +"loop": false, +"name": &"wait", +"speed": 5.0 +}] diff --git a/addons/popochiu/engine/cursor/sprites/cursor.png b/addons/popochiu/engine/cursor/sprites/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..fccb3b244cd013e382e886b7417986941c9ce48e GIT binary patch literal 1191 zcmV;Y1X%ltP)Px(VM#6Xdr|)YTv>3m zeGmI~^b0}=>mTYTB-_=5%62*8`Ul|Jlnqe0wSP2%4|?1A`B>1c9_NMGZQ|Y~Fz>y03)60C!`!zA)QE4Sw&Zl#WvGiO>sf6nvR6G& z#-8PoZborue*gMu6{=a*MrANU4!2NWZGGGfVsCEW6}ecK{lXhoImo4T@5o?q_YBZi zY@c2L-Whg&%J`9C{4!qkHEhKCXA~}Le9jz+3?6%yM;Ye|Bha-QutgaRkVAI<(~i&; z>VRA6fLI)VTK45W?6bAhT36lL4d|>hvlOEh|Lj_k55L=1X9__cgw z&p$|SXj2j4sPQVzBKM$bUC-g~*>zzFrPY-BAdV=qzV6PLaI z{QcM5r!c}u+$smyt0XmR_Xa=Y`3N)ArQj9=G zsDD!)8!x;rWgv>3<m6G<1GM3)g%EK+^V2!EI*4uQUVS%t3YR zXUsfreF)kY+pNc(yq)dBpmjZdQ%p=f}H`n{)S>pK`x7qmIWYIn3&SQN8rFhh8fW#L6!c zbTjLGA9)D>k%yqm-d8Yw2(CH;wSEY%7T<_>&V_|F@A!V-1QwQK6gTHs{|rs#U+jDJ z*jdcmb*9e4QtkMHbG99i0dkn)RO*058$8YUj?n2ucFvtMIu~aRw)ZAmPI;}p?jbGc zS^VTZ3#utV=aMB6K|@f^x~Uo?dHLU5DfTc1_&Y!&oQDx|h{`s}VkuBo?&>A5%09^w zSeAfr8T65Ju)70P{9Nq@WZ4N(-Ta&O9B7t^ z!EfO$*cEf{64;h6w_T6WJ`GheN9+;J)N)bBg` zW$GCa=qdm38TAhUY>o8Wc!vy~8~^|q&T1#<89G3F|1U5A0B~*o6_z=l{|Ep8fWquI zf}MMg*&pYgAVB~CFtn@vT`&Lu000000000000003_z!I!2)P!N>gE6d002ovPDHLk FV1gLIE}H-V literal 0 HcmV?d00001 diff --git a/addons/popochiu/engine/cursor/sprites/cursor.png.import b/addons/popochiu/engine/cursor/sprites/cursor.png.import new file mode 100644 index 0000000..122a930 --- /dev/null +++ b/addons/popochiu/engine/cursor/sprites/cursor.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bl3ecai6lvat1" +path="res://.godot/imported/cursor.png-46ea11cf9adf0d4df6d3fbe5a77d49cf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/popochiu/engine/cursor/sprites/cursor.png" +dest_files=["res://.godot/imported/cursor.png-46ea11cf9adf0d4df6d3fbe5a77d49cf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/popochiu/engine/helpers/popochiu_characters_helper.gd b/addons/popochiu/engine/helpers/popochiu_characters_helper.gd new file mode 100644 index 0000000..ac731ff --- /dev/null +++ b/addons/popochiu/engine/helpers/popochiu_characters_helper.gd @@ -0,0 +1,82 @@ +class_name PopochiuCharactersHelper +extends RefCounted +## Helper class to handle things related to [PopochiuCharacters] but that may not be the +## responsibility of [PopochiuICharacter]. + +static var char_pattern := r'(?.+?)' +static var emo_pattern := r'(?:\((?\w+)\))?' +static var time_pattern := r'(?:\[(?