diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 3357fabd9..9f4be00b1 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -2,7 +2,7 @@ name: Feature request about: Suggest an idea for this project title: '' -labels: enhancement +labels: improvement assignees: '' --- diff --git a/.github/ISSUE_TEMPLATE/rfc.md b/.github/ISSUE_TEMPLATE/rfc.md new file mode 100644 index 000000000..bf402f0b4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/rfc.md @@ -0,0 +1,37 @@ +--- +name: Proposal (RFC) +about: Request For Comments on a specific topic. Used to discuss high-level decisions before we open issues and milestones. +title: '' +labels: proposal +assignees: '' + +--- + +### Topic + +A clear and concise description of the scope of this discussion. +May specify which aspects NOT to discuss. + +### Goals + +Describe the goals, if any, of this discussion or proposal. +Some examples of valid goals: + +- Define architectural direction +- Identify use cases +- Change how we do things +- Propose a new course of actions +- Discuss changes + +### Your proposal, in detail + +Be detailed; add visuals, schemas, and diagrams as you see fit (consider using [mermaid](https://mermaid.js.org/) for them). +Post references, explain experiments, name people in our community if you feel they can add value. + +The aim here is to discuss, so do your best to set the conversation. + +### Record of decisions taken + +> LEAVE EMPTY + +We will discuss in the comments, and fill this area only with the final decision, as we take them. diff --git a/.gitignore b/.gitignore index 817928ba5..9fcfd9c0c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,3 @@ -# Addons other than Popochiu -# (we use some for development) -# addons/* -# !addons/popochiu/ - # Godot-specific ignores .import/ export.cfg @@ -43,4 +38,6 @@ docs/dist/**/* !docs/dist/.gitkeep Collector*.gd ReferenceCollectorCLI*.gd -reference.json \ No newline at end of file +reference.json + +!addons/* \ No newline at end of file diff --git a/LEEME.md b/LEEME.md index f79c7e886..8401de709 100644 --- a/LEEME.md +++ b/LEEME.md @@ -1,79 +1,115 @@ -# Popochiu 2 +# Popochiu -[![Godot v4.2.x](https://img.shields.io/badge/Godot-4.2.x-blue)](https://godotengine.org/download/archive/4.2.1-stable/) [![Discord](https://img.shields.io/discord/1128222869898416182?label=Discord&logo=discord&logoColor=ffffff&labelColor=5865F2&color=5865F2)](https://discord.gg/Frv8C9Ters) +[![Godot v4.3](https://img.shields.io/badge/Godot-4.3-blue)](https://godotengine.org/download/archive/4.3-stable/) [![Godot v4.2.x](https://img.shields.io/badge/Godot-4.2.x-blue)](https://godotengine.org/download/archive/4.2.2-stable/) [![Discord](https://img.shields.io/discord/1128222869898416182?label=Discord&logo=discord&logoColor=ffffff&labelColor=5865F2&color=5865F2)](https://discord.gg/Frv8C9Ters) -![cover](https://github.com/carenalgas/popochiu/wiki/images/popochiu_2_hero-es.png "Popochiu") +![Imagen de portada](home_banner.png "Popochiu") -Un plugin para Godot que permite crear juegos de aventura gráfica fácilmente con un flujo de trabajo como el de [Adventure Game Studio](https://www.adventuregamestudio.co.uk/) y [PowerQuest](https://powerhoof.itch.io/powerquest). +Un plugin de Godot para crear juegos point n' click inspirado por [Adventure Game Studio](https://www.adventuregamestudio.co.uk/) y [PowerQuest](https://powerhoof.itch.io/powerquest). -### 🌎 [Read this in English](./README.md) 🌎 +> 🌎👉🏽 [Read the English version](./README.md) 👈🏽🌎 --- -🔍 Lee la [Documentación](https://carenalgas.github.io/popochiu/) (en progreso) para conocer lo que puedes hacer con el plugin. +🔍 Lee la [Documentación](https://carenalgas.github.io/popochiu/) para saber qué puedes hacer con el plugin. -❤️ Únete al [Discord de Carenalgas](https://discord.gg/Frv8C9Ters) para ver actualizaciones diarias y otras publicaciones. +❤️ Únete al [Discord de Carenalga](https://discord.gg/Frv8C9Ters) para conocer actualizaciones diarias y lanzamientos. -▶️ Sigue los [tutoriales](https://www.youtube.com/playlist?list=PLH0IOYEunrBDz6h4G3vujEmQUZs8vLjz8) (en español) para aprender a usar el plugin. +▶️ Sigue los [tutoriales](https://www.youtube.com/playlist?list=PLH0IOYEunrBDz6h4G3vujEmQUZs8vLjz8) (subtítulos en inglés) para aprender a usar el plugin. +## Acerca de +Esta herramienta consta de dos partes: el motor (Popochiu) y el plugin del editor que ayuda con la creación de elementos del juego (nodos y recursos) que utilizan dicho motor. Está inspirado en herramientas bien establecidas para la creación de juegos de aventura gráfica, como Adventure Game Studio y PowerQuest (un plugin para Unity de PowerHoof). Popochiu organiza los juegos en Habitaciones, las escenas donde los Personajes pueden moverse e interactuar con Objetos y Puntos de Interés. También proporciona sistemas de gestión de Inventario y Diálogos. -# ¿Qué es? +## Características -Esta herramienta consta de dos partes: el núcleo (Popochiu) y el dock que facilita la creación de los Objetos que hacen uso de dicho núcleo. Está inspirado en como se desarrollan las aventuras gráficas en Adventure Game Studio y en el plugin de Unity de Power Hoof: PowerQuest. Esto es, utilizando Habitaciones (Room) como escenarios donde los Personajes (Character) pueden moverse e interactuar con Props y Hotspots, y proporcionando un sistema de inventario y de gestión de diálogos. +### Motor -![features](https://github.com/carenalgas/popochiu/wiki/images/popochiu_list_of_features-es.png "Features") +* Soporte completo para juegos en 2D de estilo retro, pixel art o alta resolución +* Gestión de personajes, con soporte para diferentes emociones durante los diálogos +* Velocidad de texto ajustable y avance automático +* Habitaciones llenas de objetos interactivos, puntos de interés, personajes locales, múltiples áreas transitables, regiones reactivas y marcadores de posición +* Gestión de inventario para tu personaje principal +* Diálogos basados en scripts, que permitien escenas complejas y múltiples interacciones +* Guardado y carga de sesiones de juego +* Gestión del historial de acciones +* Transiciones personalizables entre habitaciones +* Múltiples interfaces gráficas predefinidas con libertad para crear una personalizada +* GUI basada en comandos +* Gestión sencilla de música de fondo y efectos de sonido +* Código y elementos 100% de Godot, sin bloqueos +### Editor +* Panel de Popochiu para acceder fácilmente a todos los elementos del juego +* API moderna e intuitiva basada en GDScript, con funciones de autocompletado +* Creación visual de todos los elementos del juego, con gizmos personalizados para propiedades especiales +* Gestión de árboles de diálogo +* Gestión de audio para música de fondo y efectos de sonido +* Importación de Habitaciones y Personajes, desde archivos fuente de [Aseprite](https://www.aseprite.org/), con toda su estructura -# Instalación +Y vendrán muchas cosas más. Popochiu está en desarrollo activo y tenemos un hoja de ruta de lanzamientos bien mantenida. -**Popochiu puede usarse en Godot 3.3.x a 3.5.x**. **¡¡¡Y ahora también funciona en Godot 4!!!** +## Tabla de compatibilidad -1. Si usas Godot 4.2, descarga [Popochiu 2.0 Beta 3](https://github.com/carenalgas/popochiu/releases/download/v2.0.0-beta3/popochiu-v2.0.0-beta3.zip). Si usas **Godot 3.5 o superior**, descarga [Popochiu 1.10.1](https://github.com/carenalgas/popochiu/releases/download/v1.10.1/popochiu-v1.10.1.zip). Si estás usando **Godot 3.3 a Godot 3.4.5**, descarga [Popochiu 1.8.7](https://github.com/carenalgas/popochiu/releases/download/v1.8.7/popochiu-v1.8.7.zip). -2. Extra su contenido y copia la carpeta `addons` dentro de la carpeta de tu proyecto. -3. Abre tu proyecto en Godot y habilita el plugin Popochiu: `Proyecto > Ajustes del Proyecto > Plugins` (the tab on the top). -4. Reinicia Godot `Proyecto > Volver a Cargar el Proyecto Actual`. -5. Verás el dock de Popochiu a la derecha del editor. ¡Eso es todo! +Popochiu es compatible con Godot 4 y Godot 3, pero sólo la versión para Godot 4 está en desarrollo activo, y la versión estable más reciente de Popochiu requiere Godot 4.3. +Por favor, revisa esta tabla para saber qué versión descargar dependiendo de la versión de Godot que quieras usar: +| Versión requerida de Godot | Lanzamiento de Popochiu | +|---|---| +| 4.3 y superior | [Popochiu 2.0](https://github.com/carenalgas/popochiu/releases/download/v2.0/popochiu-v2.0.0.zip) | +| 3.5 a 3.6 | [Popochiu 1.10.1](https://github.com/carenalgas/popochiu/releases/download/v1.10.1/popochiu-v1.10.1.zip) | +| 3.3 a 3.4.5 | [Popochiu 1.8.7](https://github.com/carenalgas/popochiu/releases/download/v1.8.7/popochiu-v1.8.7.zip) | +## Instalación -# Tutoriales +1. Descarga la versión correcta para tu versión de Godot. +2. Extrae el archivo y copia la carpeta `addons` en la carpeta de tu proyecto. +3. Abre tu proyecto de Godot y habilita el plugin de Popochiu: `Proyecto > Configuración del Proyecto` y selecciona la pestaña `Plugins` en la parte superior. +4. Popochiu te dirá que reiniciará el motor. +5. Verás el panel de Popochiu en el área inferior derecha del editor. ¡Eso es todo! -[![tutoriales](https://github.com/carenalgas/popochiu/wiki/images/popochiu_tutorials_button-es.png "Ir a los tutoriales")](https://www.youtube.com/playlist?list=PLH0IOYEunrBDz6h4G3vujEmQUZs8vLjz8) +## Documentación -Ahora puedes seguir los tutoriales (¡Completamente en español! (la versión en Inglés la publicaremos pronto)) [en este enlace](https://www.youtube.com/playlist?list=PLH0IOYEunrBDz6h4G3vujEmQUZs8vLjz8). Allí aprenderás: +* Encuentra [aquí la documentación de la última versión](https://carenalgas.github.io/popochiu/). +* Lee [esta wiki para la versión 1.x](https://github.com/carenalgas/popochiu/wiki). -- [Instalar el plugin, crear una habitación, un área transitable y un personaje](https://youtu.be/-N62S1DHbcs). -- [Configurar baselines, huecos en las areas transitables y crear Hotspots](https://youtu.be/5RbqbG3_0ak). -- [Crear Props con interacción y un objeto de inventario](https://youtu.be/_an0YF3Bd50). -- [Crear diálogos con opciones](https://youtu.be/Aql4wh2itF4). -- [Habilitar opciones dentro de un diálogo y usar objetos de inventario](https://youtu.be/Ad_YBG-_wYE). -- [Agregar otra habitación y configurar la cámara para que siga al personaje](https://youtu.be/YFEZaSty3aw). -- [Agregar audio](https://youtu.be/VF7V6BJmQVQ). +## Tutoriales +Los tutoriales están disponibles para la versión 1.x de Popochiu: +[![tutoriales](https://github.com/carenalgas/popochiu/wiki/images/popochiu_tutorials_button-en.png "Tutorial en Video")](https://www.youtube.com/playlist?list=PLH0IOYEunrBDz6h4G3vujEmQUZs8vLjz8) -# Juegos hechos con Popochiu +Puedes seguir los tutoriales (con subtítulos en inglés) [en esta lista](https://www.youtube.com/playlist?list=PLH0IOYEunrBDz6h4G3vujEmQUZs8vLjz8) para aprender: -- [Gustavo the Shy Ghost](https://lexibobble.itch.io/gustavo-the-shy-ghost-project) - En inglés. -- [Detective Paws](https://benjatk.itch.io/detective-paws) - En inglés. -- [Zappin' da Mubis](https://carenalga.itch.io/zappin-da-mubis) - En inglés. -- [Reality-On-The-Norm: Ghost of Reality's Past](https://edmundito.itch.io/ron-ghost) (password: `popochiu`) - En inglés. -- [Breakout (demo)](https://rockyrococo.itch.io/breakout-demo) - En inglés. -- [Poin'n'Sueldo](https://matata-exe.itch.io/pointnsueldo) - En español. -- [Dr. Rajoy](https://guldann.itch.io/dr-rajoy) - En español. -- [I'm Byron Mental](https://leocantus23.itch.io/im-byron-mental-colombia) - En español. -- [Benito Simulator](https://panconqueso94.itch.io/benito-simulator) - En español. -- [Pato & Lobo](https://perroviejo.itch.io/patolobo) - En inglés y español (¡este fue el primer juego hecho con Popochiu!). +* [Instalar el plugin, crear una habitación, un área transitable y un personaje](https://youtu.be/-N62S1DHbcs). +* [Configurar las líneas base, agujeros en áreas transitables y crear Puntos de Interés](https://youtu.be/5RbqbG3_0ak). +* [Crear Objetos interactivos y un objeto de inventario](https://youtu.be/_an0YF3Bd50). +* [Crear diálogos con opciones](https://youtu.be/Aql4wh2itF4). +* [Habilitar opciones dentro de un diálogo y usar objetos de inventario](https://youtu.be/Ad_YBG-_wYE). +* [Agregar otra habitación y configurar la cámara para seguir al personaje](https://youtu.be/YFEZaSty3aw). +* [Agregar audio](https://youtu.be/VF7V6BJmQVQ). +## Hechos con Popochiu +* [Gustavo the Shy Ghost](https://lexibobble.itch.io/gustavo-the-shy-ghost-project) - Inglés. +* [Detective Paws](https://benjatk.itch.io/detective-paws) - Inglés. +* [The Sunnyside Motel in Huttsville Arkansas](https://fgaha56.itch.io/the-sunnyside-motel-in-huttsville-arkansas) - Inglés. +* [Zappin' da Mubis](https://carenalga.itch.io/zappin-da-mubis) - Inglés. +* [Reality-On-The-Norm: Ghost of Reality's Past](https://edmundito.itch.io/ron-ghost) (contraseña: `popochiu`) - Inglés. +* [Breakout (demo)](https://rockyrococo.itch.io/breakout-demo) - Inglés. +* [Poin'n'Sueldo](https://matata-exe.itch.io/pointnsueldo) - Español. +* [Dr. Rajoy](https://guldann.itch.io/dr-rajoy) - Español. +* [I'm Byron Mental](https://leocantus23.itch.io/im-byron-mental-colombia) - Español. +* [Benito Simulator](https://panconqueso94.itch.io/benito-simulator) - Español. +* [Pato & Lobo](https://perroviejo.itch.io/patolobo) - Inglés y Español (este fue el primer juego hecho con Popochiu!). -# Créditos +## Créditos -Hecho por [Carenalga](https://carenalga.itch.io). +Popochiu es un proyecto de [Carenalga](https://carenalga.itch.io). +Ahora es mantenido por [Carenalga](https://carenalga.itch.io) y [StickGrinder](https://twitter.com/StickGrinder) con muchas contribuciones de otros miembros de nuestra encantadora comunidad. -Ahora con la colaboración de [StickGrinder](https://twitter.com/StickGrinder) (y otros miembros de [Illiterate Code Games](https://illiteratecodegames.itch.io)), [@vonagam](https://github.com/vonagam), [@JuannFerrari](https://github.com/JuannFerrari), [Whyschuck](https://github.com/Whyshchuck), y nuestra querida comunidad. +:heart::heart::heart: Agradecimientos especiales a :heart::heart::heart: -:heart::heart::heart: Unas muchísimas gracias a [Edmundito](https://github.com/edmundito), [Whyschuck](https://github.com/Whyshchuck), y **Matthew** por su aporte mensual a nuestra [Ko-fi](https://ko-fi.com/carenalga) :heart::heart::heart: +* [Edmundito](https://github.com/edmundito), [Whyschuck](https://github.com/Whyshchuck), y **Turquoise** por su contribución mensual a nuestro [Ko-fi](https://ko-fi.com/carenalga) +* [Illiterate Code Games](https://illiteratecodegames.itch.io)), [@vonagam](https://github.com/vonagam), [@JuannFerrari](https://github.com/JuannFerrari), [Whyschuck](https://github.com/Whyshchuck) por sus valiosas contribuciones diff --git a/README.md b/README.md index a4d8f160f..21a416e46 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -# Popochiu 2 +# Popochiu -[![Godot v4.2.x](https://img.shields.io/badge/Godot-4.2.x-blue)](https://godotengine.org/download/archive/4.2.1-stable/) [![Discord](https://img.shields.io/discord/1128222869898416182?label=Discord&logo=discord&logoColor=ffffff&labelColor=5865F2&color=5865F2)](https://discord.gg/Frv8C9Ters) +[![Godot v4.3](https://img.shields.io/badge/Godot-4.3-blue)](https://godotengine.org/download/archive/4.3-stable/) [![Godot v4.2.x](https://img.shields.io/badge/Godot-4.2.x-blue)](https://godotengine.org/download/archive/4.2.2-stable/) [![Discord](https://img.shields.io/discord/1128222869898416182?label=Discord&logo=discord&logoColor=ffffff&labelColor=5865F2&color=5865F2)](https://discord.gg/Frv8C9Ters) -![cover](https://github.com/carenalgas/popochiu/wiki/images/popochiu_2_hero-en.png "Popochiu") +![Cover image](home_banner.png "Popochiu") -A Godot plugin to make point n' click games the easy way with a workflow similar to [Adventure Game Studio](https://www.adventuregamestudio.co.uk/) and [PowerQuest](https://powerhoof.itch.io/powerquest). +A Godot plugin to make point n' click games, inspired by [Adventure Game Studio](https://www.adventuregamestudio.co.uk/) and [PowerQuest](https://powerhoof.itch.io/powerquest). -### 🌎👉🏽 [Lee la versión en Español](./LEEME.md) 👈🏽🌎 +> 🌎👉🏽 [Lee la versión en Español](./LEEME.md) 👈🏽🌎 --- @@ -16,63 +16,100 @@ A Godot plugin to make point n' click games the easy way with a workflow similar ▶️ Follow the [tutorials](https://www.youtube.com/playlist?list=PLH0IOYEunrBDz6h4G3vujEmQUZs8vLjz8) (English subs.) to learn how to use the plugin. +## About +This tool consists of two parts: the engine (Popochiu) and the editor plugin that helps with the creation of game elements (nodes and resources) that make use of the engine. It is inspired by well established graphics adventure games creation tools like Adventure Game Studio and PowerQuest (a Unity plugin by PowerHoof). It organizes the games in Rooms, the scenes where Characters can move and interact with Props and Hotspots. It also provides Inventory and Dialogue management systems. -# About +## Features -This tool consists of two parts: the core (Popochiu) and the dock that helps with the creation of the Nodes that make use of that core. It is inspired in how graphic adventure games are created in Adventure Game Studio and Power Hoof's Unity plugin: PowerQuest. This is, using Rooms as the scenes where Characters can move and interact with Props and Hotspots, and providing an Inventory system and Dialog trees. +### Engine -![features](https://github.com/carenalgas/popochiu/wiki/images/popochiu_list_of_features-en.png "Features") +* Seamless support for retro-style, pixel-art or high resolution 2D games +* Characters management, with the support of different emotions during dialogues +* Tunable text speed and auto-advance +* Rooms full with interactive props, hotspots, local characters, multiple walkable areas, reactive regions and position markers +* Inventory management for your main character +* Scripting-based dialogs, enabling complex cutscenes and interactions +* Game sessions saving and loading +* Actions history management +* Customizable transition between rooms +* Multiple out-of-the-box graphics interfaces with the freedom to create custom ones +* Command-based GUI framework +* Easy background music and sound effects management +* 100% pure Godot code and elements, no lock-in +### Editor +* Popochiu Dock for easy access to all game elements +* Intuitive, modern GDScript-based scripting API, with autocomplete features +* Visual creation of all the game elements, with custom gizmos for special properties +* Dialog trees management +* Audio management for background music and sound effects +* Import Rooms and Character from [Aseprite](https://www.aseprite.org/) source files with full structure -# Installation - -**Popochiu works on Godot 3.3.x to 3.5.x**. **And now in Godot 4 too!!!** - -1. Godot 4.2 users can download [Popochiu 2.0 - Beta 3](https://github.com/carenalgas/popochiu/releases/download/v2.0.0-beta3/popochiu-v2.0.0-beta3.zip). If you are using **Godot 3.5 onwards**, download [Popochiu 1.10.1](https://github.com/carenalgas/popochiu/releases/download/v1.10.1/popochiu-v1.10.1.zip). If you are using **Godot 3.3 to Godot 3.4.5**, download [Popochiu 1.8.7](https://github.com/carenalgas/popochiu/releases/download/v1.8.7/popochiu-v1.8.7.zip). -2. Extract it and copy the `addons` folder into your project folder. -3. Open your Godot project and enable the Popochiu plugin: `Project > Project Settings... > Plugins` (the tab on the top). -4. Restart Godot `Project > Reload Current Project`. -5. You'll see the Popochiu dock at the right. That's all! +And much more to come. Popochiu is in active development and we have a well maintained releases roadmap. +## Compatibility chart +Popochiu supports Godot 4 as well as Godot 3, but only the Godot 4 release is under active development, and the latest stable version of Popochiu requires Godot 4.3. -# Tutorials +Please review this table to know which version to download, depending on the version of Godot you want to use: -[![tutorials](https://github.com/carenalgas/popochiu/wiki/images/popochiu_tutorials_button-en.png "Go to the tutorials")](https://www.youtube.com/playlist?list=PLH0IOYEunrBDz6h4G3vujEmQUZs8vLjz8) - -You can follow the tutorials (English subs) [in this list](https://www.youtube.com/playlist?list=PLH0IOYEunrBDz6h4G3vujEmQUZs8vLjz8) to learn: +| Required Godot version | Popochiu Release | +|---|---| +| 4.3 and above | [Popochiu 2.0](https://github.com/carenalgas/popochiu/releases/download/v2.0/popochiu-v2.0.0.zip) | +| 3.5 to 3.6 | [Popochiu 1.10.1](https://github.com/carenalgas/popochiu/releases/download/v1.10.1/popochiu-v1.10.1.zip) | +| 3.3 to 3.4.5 | [Popochiu 1.8.7](https://github.com/carenalgas/popochiu/releases/download/v1.8.7/popochiu-v1.8.7.zip) | -- [Install the plugin, create a room, a walkable area, and a character](https://youtu.be/-N62S1DHbcs). -- [Configure baselines, holes in walkable areas, and create Hotspots](https://youtu.be/5RbqbG3_0ak). -- [Create interactive Props and an inventory object](https://youtu.be/_an0YF3Bd50). -- [Create dialogues with options](https://youtu.be/Aql4wh2itF4). -- [Enable options within a dialogue and use inventory objects](https://youtu.be/Ad_YBG-_wYE). -- [Add another room and configure the camera to follow the character](https://youtu.be/YFEZaSty3aw). -- [Add audio](https://youtu.be/VF7V6BJmQVQ). +## Installation +1. Download the correct release for your Godot version. +2. Extract it and copy the `addons` folder into your project folder. +3. Open your Godot project and enable the Popochiu plugin: `Project > Project Settings` then select the `Plugins` tab on top. +4. Popochiu will show you a popup indicating it will restart the engine. +5. You'll see the Popochiu dock in the right-bottom editor area. That's all! +## Documentation -# Games made with Popochiu - -- [Gustavo the Shy Ghost](https://lexibobble.itch.io/gustavo-the-shy-ghost-project) - English. -- [Detective Paws](https://benjatk.itch.io/detective-paws) - English. -- [Zappin' da Mubis](https://carenalga.itch.io/zappin-da-mubis) - English. -- [Reality-On-The-Norm: Ghost of Reality's Past](https://edmundito.itch.io/ron-ghost) (password: `popochiu`) - English. -- [Breakout (demo)](https://rockyrococo.itch.io/breakout-demo) - English. -- [Poin'n'Sueldo](https://matata-exe.itch.io/pointnsueldo) - Spanish. -- [Dr. Rajoy](https://guldann.itch.io/dr-rajoy) - Spanish. -- [I'm Byron Mental](https://leocantus23.itch.io/im-byron-mental-colombia) - Spanish. -- [Benito Simulator](https://panconqueso94.itch.io/benito-simulator) - Spanish. -- [Pato & Lobo](https://perroviejo.itch.io/patolobo) - English and Spanish (this was the first game made with Popochiu!). - +* Find [here the documentation for the latest version](https://carenalgas.github.io/popochiu/). +* Read [this wiki for legacy version 1.x](https://github.com/carenalgas/popochiu/wiki). +## Tutorials -# Credits +Video Tutorials are available for legacy version: -Made by [Carenalga](https://carenalga.itch.io). +[![tutorials](https://github.com/carenalgas/popochiu/wiki/images/popochiu_tutorials_button-en.png "Video Tutorial")](https://www.youtube.com/playlist?list=PLH0IOYEunrBDz6h4G3vujEmQUZs8vLjz8) -Now with the collaboration of [StickGrinder](https://twitter.com/StickGrinder) (and other members of [Illiterate Code Games](https://illiteratecodegames.itch.io)), [@vonagam](https://github.com/vonagam), [@JuannFerrari](https://github.com/JuannFerrari), [Whyschuck](https://github.com/Whyshchuck), and our lovely community. +You can follow the tutorials (English subs) [in this list](https://www.youtube.com/playlist?list=PLH0IOYEunrBDz6h4G3vujEmQUZs8vLjz8) to learn: -:heart::heart::heart: Special thanks to [Edmundito](https://github.com/edmundito), [Whyschuck](https://github.com/Whyshchuck), and **Matthew** for their monthly contribution to our [Ko-fi](https://ko-fi.com/carenalga) :heart::heart::heart: +* [Install the plugin, create a room, a walkable area, and a character](https://youtu.be/-N62S1DHbcs). +* [Configure baselines, holes in walkable areas, and create Hotspots](https://youtu.be/5RbqbG3_0ak). +* [Create interactive Props and an inventory object](https://youtu.be/_an0YF3Bd50). +* [Create dialogues with options](https://youtu.be/Aql4wh2itF4). +* [Enable options within a dialogue and use inventory objects](https://youtu.be/Ad_YBG-_wYE). +* [Add another room and configure the camera to follow the character](https://youtu.be/YFEZaSty3aw). +* [Add audio](https://youtu.be/VF7V6BJmQVQ). + +## Made with Popochiu + +* [Gustavo the Shy Ghost](https://lexibobble.itch.io/gustavo-the-shy-ghost-project) - English. +* [Detective Paws](https://benjatk.itch.io/detective-paws) - English. +* [The Sunnyside Motel in Huttsville Arkansas](https://fgaha56.itch.io/the-sunnyside-motel-in-huttsville-arkansas) - English. +* [Zappin' da Mubis](https://carenalga.itch.io/zappin-da-mubis) - English. +* [Reality-On-The-Norm: Ghost of Reality's Past](https://edmundito.itch.io/ron-ghost) (password: `popochiu`) - English. +* [Breakout (demo)](https://rockyrococo.itch.io/breakout-demo) - English. +* [Poin'n'Sueldo](https://matata-exe.itch.io/pointnsueldo) - Spanish. +* [Dr. Rajoy](https://guldann.itch.io/dr-rajoy) - Spanish. +* [I'm Byron Mental](https://leocantus23.itch.io/im-byron-mental-colombia) - Spanish. +* [Benito Simulator](https://panconqueso94.itch.io/benito-simulator) - Spanish. +* [Pato & Lobo](https://perroviejo.itch.io/patolobo) - English and Spanish (this was the first game made with Popochiu!). + +## Credits + +Popochiu is a project by [Carenalga](https://carenalga.itch.io). +It is now maintained by [Carenalga](https://carenalga.itch.io) and [StickGrinder](https://twitter.com/StickGrinder) with many contributions by other members of our lovely community. + +:heart::heart::heart: Special thanks to :heart::heart::heart: + +* [Edmundito](https://github.com/edmundito), [Whyschuck](https://github.com/Whyshchuck), and **Turquoise** for their monthly contribution to our [Ko-fi](https://ko-fi.com/carenalga) +* [Illiterate Code Games](https://illiteratecodegames.itch.io)), [@vonagam](https://github.com/vonagam), [@JuannFerrari](https://github.com/JuannFerrari), [Whyschuck](https://github.com/Whyshchuck) for the many valuable contributions 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 index ad40325f3..af32f640a 100644 --- a/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd +++ b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd @@ -3,141 +3,301 @@ 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 _types_helper: Resource = null -var _selected_node: Node = null +var _active_popochiu_object: Node = null var _shown_helpers := [] @onready var btn_baseline: Button = %BtnBaseline -@onready var btn_walk_point: Button = %BtnWalkPoint +@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: - _types_helper = load('res://addons/popochiu/editor/helpers/popochiu_types_helper.gd') - + # 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(_select_baseline) - btn_walk_point.pressed.connect(_select_walk_point) + 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(_check_nodes) - - hide() + 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 _select_walk_point() -> void: - btn_baseline.set_pressed_no_signal(false) - btn_interaction_polygon.set_pressed_no_signal(false) - - EditorInterface.get_selection().clear() - - var walk_point_helper: Marker2D = null - - if _types_helper.is_prop(_selected_node)\ - or _types_helper.is_hotspot(_selected_node): - walk_point_helper = _selected_node.get_node("WalkToHelper") - else: - walk_point_helper = _selected_node.get_node("../WalkToHelper") - - EditorInterface.get_selection().add_node(walk_point_helper) +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 _select_baseline() -> void: - btn_walk_point.set_pressed_no_signal(false) - btn_interaction_polygon.set_pressed_no_signal(false) - - EditorInterface.get_selection().clear() - - var baseline_helper: Line2D = null - - if _types_helper.is_prop(_selected_node)\ - or _types_helper.is_hotspot(_selected_node): - baseline_helper = _selected_node.get_node("BaselineHelper") - else: - baseline_helper = _selected_node.get_node("../BaselineHelper") - - EditorInterface.get_selection().add_node(baseline_helper) +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: - btn_walk_point.set_pressed_no_signal(false) - btn_baseline.set_pressed_no_signal(false) - + # 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() - - var collision_polygon: CollisionPolygon2D = null - - if _types_helper.is_prop(_selected_node)\ - or _types_helper.is_hotspot(_selected_node): - collision_polygon = _selected_node.get_node('InteractionPolygon') - else: - collision_polygon = _selected_node.get_node('../InteractionPolygon') - - EditorInterface.get_selection().add_node(collision_polygon) - collision_polygon.get_parent().editing_polygon = true + EditorInterface.get_selection().add_node(obj_polygon) + obj_polygon.show() -# Toggles Clickable helpers in order to show walk-to-point, baseline and dialog -# position (PopochiuCharacter) only when a node of that type is selected in the -# scene tree. -func _check_nodes() -> void: - var deselect_helpers_buttons := false - +func _on_gizmo_settings_changed() -> void: + # Pretty self explanatory + _set_walkable_areas_visibility() + _set_toolbar_buttons_color() + + +func _on_selection_changed() -> void: + # 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 pop all the buttons up and + # leave the toolbar hidden. if EditorInterface.get_selection().get_selected_nodes().is_empty(): - deselect_helpers_buttons = true - - # Deselect any BaselineHelper or WalkToPointHelper - if EditorInterface.get_selection().get_selected_nodes().size() > 1: + 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() + 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() + _reset_buttons_state() + 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 = 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 explicitely (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 node.name in ["BaselineHelper", "WalkToHelper", "InteractionPolygon"]: + if PopochiuEditorHelper.is_popochiu_obj_polygon(node): + node.hide() EditorInterface.get_selection().remove_node.call_deferred(node) - deselect_helpers_buttons = true - - if deselect_helpers_buttons: - _deselect_buttons() - - for n in _shown_helpers: - if is_instance_valid(n): - n.hide_helpers() - - _shown_helpers.clear() - - if not is_instance_valid(EditorInterface.get_selection()): return - - for n in EditorInterface.get_selection().get_selected_nodes(): - if n.has_method('show_helpers'): - n.show_helpers() - _shown_helpers.append(n) - elif n.get_parent().has_method('show_helpers'): - n.get_parent().show_helpers() - _shown_helpers.append(n.get_parent()) - - if not is_instance_valid(_types_helper): return + btn_interaction_polygon.set_pressed_no_signal(false) + + # Always reset the walkable areas visibility depending on the user preferences + _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 settigs) +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_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 EditorInterface.get_selection().get_selected_nodes().size() == 1: - _selected_node = EditorInterface.get_selection().get_selected_nodes()[0] - - if _types_helper.is_prop(_selected_node)\ - or _types_helper.is_hotspot(_selected_node)\ - or _types_helper.is_prop(_selected_node.get_parent())\ - or _types_helper.is_hotspot(_selected_node.get_parent()): - if _types_helper.is_prop(_selected_node)\ - or _types_helper.is_hotspot(_selected_node): - _deselect_buttons() - - show() - else: - hide() + # 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() -func _deselect_buttons() -> void: - for button: Button in get_children(): - button.set_pressed_no_signal(false) + # 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() -#endregion +# 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.tscn b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.tscn index c85d3638b..58e69e5c7 100644 --- a/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.tscn +++ b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=5 format=3 uid="uid://wd748u1vdybq"] +[gd_scene load_steps=7 format=3 uid="uid://wd748u1vdybq"] -[ext_resource type="Texture2D" uid="uid://dasi6853uqkmu" path="res://addons/popochiu/icons/baseline.png" id="1_8j5rt"] [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://4ovxgn77a0ax" path="res://addons/popochiu/icons/walk_to_point.png" id="2_po7va"] -[ext_resource type="Texture2D" uid="uid://cesndtvbchw7v" path="res://addons/popochiu/icons/interaction_polygon.png" id="3_kma38"] +[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 @@ -11,23 +13,53 @@ 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 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 +layout_mode = 2 +tooltip_text = "Walk-To Point" +theme_type_variation = &"FlatButton" toggle_mode = true -icon = ExtResource("1_8j5rt") +button_pressed = true +icon = ExtResource("3_ifql1") -[node name="BtnWalkPoint" type="Button" parent="."] +[node name="BtnLookAtPoint" type="Button" parent="."] unique_name_in_owner = true +visible = false +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 +visible = false layout_mode = 2 -tooltip_text = "Walk point" +tooltip_text = "Dialog Position" +theme_type_variation = &"FlatButton" toggle_mode = true -icon = ExtResource("2_po7va") +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("3_kma38") +icon = ExtResource("6_6oxl8") diff --git a/addons/popochiu/editor/config/config.gd b/addons/popochiu/editor/config/config.gd index baf91fd36..7c0563f7c 100644 --- a/addons/popochiu/editor/config/config.gd +++ b/addons/popochiu/editor/config/config.gd @@ -6,8 +6,8 @@ enum DialogStyle { ABOVE_CHARACTER, PORTRAIT, CAPTION, - PORTRAIT_ABOVE_CHARACTER, - BUBBLE_ABOVE_CHARACTER, + #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 @@ -16,12 +16,14 @@ enum DialogStyle { 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 DIALOG_STYLE = "popochiu/gui/dialog_style" # ---- 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" @@ -38,158 +40,235 @@ const ASEPRITE_WIPE_OLD_ANIMATIONS = "popochiu/aseprite_import/wipe_old_animatio 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, + 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, false, TYPE_BOOL) - _initialize_project_setting(FADE_COLOR, Color.BLACK, TYPE_COLOR) - _initialize_project_setting(SKIP_CUTSCENE_TIME, 0.2, TYPE_FLOAT) + _initialize_project_setting(SCALE_GUI, TYPE_BOOL) + _initialize_project_setting(FADE_COLOR, TYPE_COLOR) + _initialize_project_setting(SKIP_CUTSCENE_TIME, TYPE_FLOAT) # ---- Dialogs --------------------------------------------------------------------------------- - _initialize_project_setting(TEXT_SPEED, 0.1, TYPE_FLOAT, PROPERTY_HINT_RANGE, "0.0,0.1") - _initialize_project_setting(AUTO_CONTINUE_TEXT, false, TYPE_BOOL) - _initialize_project_setting(USE_TRANSLATIONS, false, TYPE_BOOL) - _initialize_project_setting( - DIALOG_STYLE, - DialogStyle.ABOVE_CHARACTER, - TYPE_INT, - PROPERTY_HINT_ENUM, - # TODO: Add the other options: Portrait Above Character, Bubble Above Character - "Above Character,Portrait,Caption" - ) + _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, 0, TYPE_INT) - _initialize_project_setting(INVENTORY_ITEMS_ON_START, [], TYPE_ARRAY, - PROPERTY_HINT_TYPE_STRING, "%d/%d:%s" % [TYPE_STRING, PROPERTY_HINT_FILE, "*tscn"] + _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, true, TYPE_BOOL) - _initialize_project_setting(ASEPRITE_LOOP_ANIMATION, true, TYPE_BOOL) - _initialize_project_setting(ASEPRITE_PROPS_VISIBLE, true, TYPE_BOOL) - _initialize_project_setting(ASEPRITE_PROPS_CLICKABLE, true, TYPE_BOOL) - _initialize_project_setting(ASEPRITE_WIPE_OLD_ANIMATIONS, true, TYPE_BOOL) + _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, false, TYPE_BOOL) - _initialize_project_setting(PIXEL_PERFECT, false, TYPE_BOOL) + _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, false, TYPE_BOOL) + _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, false) + return _get_project_setting(SCALE_GUI) static func get_fade_color() -> Color: - return _get_project_setting(FADE_COLOR, Color.BLACK) + return _get_project_setting(FADE_COLOR) static func get_skip_cutscene_time() -> float: - return _get_project_setting(SKIP_CUTSCENE_TIME, 0.2) + return _get_project_setting(SKIP_CUTSCENE_TIME) # ---- Dialogs ------------------------------------------------------------------------------------- static func get_text_speed() -> float: - return _get_project_setting(TEXT_SPEED, 0.1) + return _get_project_setting(TEXT_SPEED) static func is_auto_continue_text() -> bool: - return _get_project_setting(AUTO_CONTINUE_TEXT, false) + return _get_project_setting(AUTO_CONTINUE_TEXT) static func is_use_translations() -> bool: - return _get_project_setting(USE_TRANSLATIONS, false) + return _get_project_setting(USE_TRANSLATIONS) static func get_dialog_style() -> int: - return _get_project_setting(DIALOG_STYLE, DialogStyle.ABOVE_CHARACTER) + 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, 0) + return _get_project_setting(INVENTORY_LIMIT) static func set_inventory_items_on_start(items: Array) -> void: - _set_project_setting(INVENTORY_ITEMS_ON_START, items) + set_project_setting(INVENTORY_ITEMS_ON_START, items) static func get_inventory_items_on_start() -> Array: - return _get_project_setting(INVENTORY_ITEMS_ON_START, []) + 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, true) + return _get_project_setting(ASEPRITE_IMPORT_ANIMATION) static func is_default_animation_loop_enabled() -> bool: - return _get_project_setting(ASEPRITE_LOOP_ANIMATION, true) + return _get_project_setting(ASEPRITE_LOOP_ANIMATION) static func is_default_animation_prop_visible() -> bool: - return _get_project_setting(ASEPRITE_PROPS_VISIBLE, true) + return _get_project_setting(ASEPRITE_PROPS_VISIBLE) static func is_default_animation_prop_clickable() -> bool: - return _get_project_setting(ASEPRITE_PROPS_CLICKABLE, true) + return _get_project_setting(ASEPRITE_PROPS_CLICKABLE) static func is_default_wipe_old_anims_enabled() -> bool: - return _get_project_setting(ASEPRITE_WIPE_OLD_ANIMATIONS, true) + 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) + set_project_setting(PIXEL_ART_TEXTURES, use_pixel_art_textures) static func is_pixel_art_textures() -> bool: - return _get_project_setting(PIXEL_ART_TEXTURES, false) + return _get_project_setting(PIXEL_ART_TEXTURES) static func is_pixel_perfect() -> bool: - return _get_project_setting(PIXEL_PERFECT, false) + 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, false) + return _get_project_setting(DEV_USE_ADDON_TEMPLATE) #endregion #region Private #################################################################################### static func _initialize_project_setting( - key: String, default_value, type: int, hint := PROPERTY_HINT_NONE, hint_string := "" + key: String, type: int, hint := PROPERTY_HINT_NONE, hint_string := "" ) -> void: - if ProjectSettings.has_setting(key): return - - _create_setting(key, default_value, type, hint) + _create_setting(key, type, hint, hint_string) ProjectSettings.set_as_basic(key, true) static func _initialize_advanced_project_setting( - key: String, default_value, type: int, hint := PROPERTY_HINT_NONE, hint_string := "" + key: String, type: int, hint := PROPERTY_HINT_NONE, hint_string := "" ) -> void: - _create_setting(key, default_value, type, hint) + _create_setting(key, type, hint, hint_string) static func _create_setting( - key: String, default_value, type: int, hint := PROPERTY_HINT_NONE, hint_string := "" + key: String, type: int, hint := PROPERTY_HINT_NONE, hint_string := "" ) -> void: - ProjectSettings.set_setting(key, default_value) - ProjectSettings.set_initial_value(key, default_value) + 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, @@ -198,14 +277,9 @@ static func _create_setting( }) -static func _get_project_setting(key: String, default_value): +static func _get_project_setting(key: String): var p = ProjectSettings.get_setting(key) - return p if p != null else default_value - - -static func _set_project_setting(key: String, value) -> void: - ProjectSettings.set_setting(key, value) - ProjectSettings.save() + return p if p != null else defaults[key] #endregion diff --git a/addons/popochiu/editor/config/editor_config.gd b/addons/popochiu/editor/config/editor_config.gd index 0544953dd..b44c8edc7 100644 --- a/addons/popochiu/editor/config/editor_config.gd +++ b/addons/popochiu/editor/config/editor_config.gd @@ -9,16 +9,60 @@ const ASEPRITE_IMPORTER_ENABLED = "popochiu/import/aseprite/enable_aseprite_impo 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() - - _initialize_editor_setting(ASEPRITE_IMPORTER_ENABLED, false, TYPE_BOOL) - _initialize_editor_setting(ASEPRITE_COMMAND_PATH, _default_command(), TYPE_STRING) - _initialize_editor_setting(ASEPRITE_REMOVE_JSON_FILE, true, TYPE_BOOL) + + # 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: @@ -37,41 +81,48 @@ static func get_icon(icon: Icons) -> Texture2D: # ASEPRITE IMPORTER -------------------------------------------------------------------------------- static func aseprite_importer_enabled() -> bool: - return _get_editor_setting(ASEPRITE_IMPORTER_ENABLED, false) + return get_editor_setting(ASEPRITE_IMPORTER_ENABLED) static func get_command() -> String: - return _get_editor_setting(ASEPRITE_COMMAND_PATH, _default_command()) + return get_editor_setting(ASEPRITE_COMMAND_PATH) static func should_remove_source_files() -> bool: - return _get_editor_setting(ASEPRITE_REMOVE_JSON_FILE, true) - + return get_editor_setting(ASEPRITE_REMOVE_JSON_FILE) #endregion + #region Private #################################################################################### -static func _default_command() -> String: +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, default_value, type: int, hint: int = PROPERTY_HINT_NONE + 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, default_value) - editor_settings.set_initial_value(key, default_value, false) + 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, default_value): +static func get_editor_setting(key: String): var e = editor_settings.get_setting(key) - return e if e != null else default_value + return e if e != null else defaults[e] #endregion diff --git a/addons/popochiu/editor/config/local_obj_config.gd b/addons/popochiu/editor/config/local_obj_config.gd index 535886d39..0b4eb390e 100644 --- a/addons/popochiu/editor/config/local_obj_config.gd +++ b/addons/popochiu/editor/config/local_obj_config.gd @@ -49,7 +49,9 @@ static func decode(string: String): static func load_config(node:Node): - if node.has_meta(LOCAL_OBJ_CONFIG_META_NAME): + # 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) diff --git a/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd b/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd index 5f68c5c1e..c84c0aa46 100644 --- a/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd +++ b/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd @@ -1,57 +1,44 @@ 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' - -const Constants := preload('res://addons/popochiu/popochiu_resources.gd') -const MainDock := preload('res://addons/popochiu/editor/main_dock/popochiu_dock.gd') -const PopochiuObjectRow := preload('res://addons/popochiu/editor/main_dock/object_row/popochiu_object_row.gd') - -var _main_dock: Panel = null - -# 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 +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 := '' -# The following variable is needed because the room factory -# must set a property on the dock row if the room is the -# primary one. -# TODO: remove the need for this using signals #67 -var _dock_row: PopochiuObjectRow -# 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 _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 -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ VIRTUAL ░░░░ -func _init(main_dock: Panel) -> void: - _main_dock = main_dock - - -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ SET & GET ░░░░ +#region Public ##################################################################################### func get_obj_scene() -> Node: return _scene +func get_snake_name() -> String: + return _snake_name + + func get_obj_resource() -> Resource: return _resource @@ -63,23 +50,37 @@ func get_state_resource() -> Resource: func get_obj_script() -> Resource: return _script -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PRIVATE ░░░ + +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' + _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: Check if another object was created in the same PATH. # TODO: Remove created files if the creation process failed. if DirAccess.make_dir_recursive_absolute(_path_base.get_base_dir()) != OK: - push_error( - '[Popochiu] Could not create %s directory: %s' % + PopochiuUtils.print_error( + "Could not create %s directory: %s" % [_path_base.get_base_dir(), _pascal_name] ) return ResultCodes.ERR_CANT_CREATE_OBJ_FOLDER @@ -92,8 +93,8 @@ func _create_state_resource() -> int: ).duplicate() if ResourceSaver.save(state_template, _path_state) != OK: - push_error( - '[Popochiu] Could not create %s state script: %s' % + PopochiuUtils.print_error( + "Could not create %s state script: %s" % [_type_label, _pascal_name] ) return ResultCodes.FAILURE @@ -104,8 +105,8 @@ func _create_state_resource() -> int: _state_resource.resource_name = _pascal_name if ResourceSaver.save(_state_resource, _path_resource) != OK: - push_error( - "[Popochiu] Couldn't create state resource for %s: %s" % + PopochiuUtils.print_error( + "Could not create state resource for %s: %s" % [_type_label, _pascal_name] ) return ResultCodes.ERR_CANT_CREATE_OBJ_STATE @@ -119,8 +120,8 @@ func _copy_script_template() -> int: ).duplicate() if ResourceSaver.save( _script, _path_script) != OK: - push_error( - "[Popochiu] Couldn't create %s script: %s" % + PopochiuUtils.print_error( + "Could not create %s script: %s" % [_type_label, _path_script] ) return ResultCodes.ERR_CANT_CREATE_OBJ_SCRIPT @@ -135,8 +136,8 @@ func _create_script_from_template() -> int: ) if script_template_file == null: - push_error( - "[Popochiu] Couldn't read script template from %s" % + PopochiuUtils.print_error( + "Could not read script template from %s" % [BASE_SCRIPT_TEMPLATE % _type_label] ) return ResultCodes.ERR_CANT_OPEN_OBJ_SCRIPT_TEMPLATE @@ -145,21 +146,21 @@ func _create_script_from_template() -> int: script_template_file.close() new_code = new_code.replace( - '%s_state_template' % _type_label, - '%s_%s_state' % [_type_label, _snake_name] + "%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 + "Data = null", + 'Data = load("%s.tres")' % _path_base ) _script = load(EMPTY_SCRIPT).duplicate() _script.source_code = new_code if ResourceSaver.save( _script, _path_script) != OK: - push_error( - "[Popochiu] Couldn't create %s script: %s" % + PopochiuUtils.print_error( + "Could not create %s script: %s" % [_type_label, _path_script] ) return ResultCodes.ERR_CANT_CREATE_OBJ_SCRIPT @@ -171,12 +172,11 @@ 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: - push_error( - "[Popochiu] Couldn't create %s: %s" % + 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) @@ -186,8 +186,8 @@ func _save_obj_scene(obj: Node) -> int: func _save_obj_resource(obj: Resource) -> int: if ResourceSaver.save(obj, _path_resource) != OK: - push_error( - "[Popochiu] Couldn't create %s: %s" % + PopochiuUtils.print_error( + "Could not create %s: %s" % [_type_label, _pascal_name] ) return ResultCodes.ERR_CANT_SAVE_OBJ_RESOURCE @@ -215,12 +215,14 @@ func _load_obj_base_scene() -> Node: func _add_resource_to_popochiu() -> void: # Add the created obj to Popochiu's correct list - if _main_dock.add_resource_to_popochiu( + var resource := ResourceLoader.load(_path_resource) + if PopochiuResources.set_data_value( _type_target, - ResourceLoader.load(_path_resource) + resource.script_name, + resource.resource_path ) != OK: - push_error( - "[Popochiu] Couldn't add the created %s to Popochiu: %s" % + PopochiuUtils.print_error( + "Could not add the created %s to Popochiu: %s" % [_type_label, _pascal_name] ) return @@ -229,6 +231,7 @@ func _add_resource_to_popochiu() -> void: PopochiuResources.update_autoloads(true) # Update the related list in the dock - _dock_row = (_main_dock as MainDock).add_to_list( - _type, _pascal_name - ) + PopochiuEditorHelper.signal_bus.main_object_added.emit(_type, _pascal_name) + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd b/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd index dd0e98d44..270499e1b 100644 --- a/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd +++ b/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd @@ -1,26 +1,44 @@ -extends 'res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd' +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_' -const TabRoom := preload("res://addons/popochiu/editor/main_dock/tab_room.gd") - -var _room_tab: VBoxContainer = null +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 := '' +var _obj_room_group := "" # The following variables are setup by the _setup_room method var _room: Node2D = null -var _room_path := '' -var _room_dir := '' +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) -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PUBLIC ░░░░ -func _init(main_dock: Panel) -> void: - super(main_dock) - _room_tab = _main_dock.get_opened_room_tab() +func get_new_instance() -> PopochiuRoomObjFactory: + return new() -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PRIVATE ░░░░ + +#endregion + +#region Private #################################################################################### func _setup_room(room: PopochiuRoom) -> void: _room = room _room_path = _room.scene_file_path @@ -56,3 +74,25 @@ func _add_resource_to_room() -> void: # 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_popochiu_character.gd b/addons/popochiu/editor/factories/factory_popochiu_character.gd index 74ed1dfcd..30475f493 100644 --- a/addons/popochiu/editor/factories/factory_popochiu_character.gd +++ b/addons/popochiu/editor/factories/factory_popochiu_character.gd @@ -1,16 +1,18 @@ -extends 'res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd' +extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd" class_name PopochiuCharacterFactory -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PUBLIC ░░░░ -func _init(_main_dock: Panel) -> void: - super(_main_dock) - _type = Constants.Types.CHARACTER - _type_label = 'character' - _type_target = 'characters' - _path_template = _main_dock.CHARACTERS_PATH + '%s/character_%s' +#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") -func create(obj_name: String) -> int: +#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 @@ -30,21 +32,19 @@ func create(obj_name: String) -> int: result_code = _create_script_from_template() if result_code != ResultCodes.SUCCESS: return result_code - # ▓▓▓ LOCAL CODE ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + # ---- LOCAL CODE ------------------------------------------------------------------------------ # Create the instance var new_obj: PopochiuCharacter = _load_obj_base_scene() - new_obj.name = 'Character' + _pascal_name + new_obj.name = "Character" + _pascal_name new_obj.script_name = _pascal_name new_obj.description = _pascal_name.capitalize() - new_obj.cursor = Constants.CURSOR_TYPE.TALK + 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 ----------------------------------------------------------------------- - - # ▓▓▓ END OF LOCAL CODE ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ - # Save the scene (.tscn) result_code = _save_obj_scene(new_obj) if result_code != ResultCodes.SUCCESS: return result_code @@ -52,4 +52,13 @@ func create(obj_name: String) -> int: # 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_dialog.gd b/addons/popochiu/editor/factories/factory_popochiu_dialog.gd index e606fe63e..4b8f88b7e 100644 --- a/addons/popochiu/editor/factories/factory_popochiu_dialog.gd +++ b/addons/popochiu/editor/factories/factory_popochiu_dialog.gd @@ -1,15 +1,17 @@ -extends 'res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd' +extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd" class_name PopochiuDialogFactory -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PUBLIC ░░░░ -func _init(_main_dock: Panel) -> void: - super(_main_dock) - _type = Constants.Types.DIALOG - _type_label = 'dialog' - _type_target = 'dialogs' - _path_template = _main_dock.DIALOGS_PATH + '%s/dialog_%s' +#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 @@ -25,14 +27,14 @@ func create(obj_name: String) -> int: result_code = _copy_script_template() if result_code != ResultCodes.SUCCESS: return result_code - # ▓▓▓ LOCAL 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 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- # Save resource (dialogs are not scenes) result_code = _save_obj_resource(new_obj) @@ -42,3 +44,6 @@ func create(obj_name: String) -> int: _add_resource_to_popochiu() return result_code + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd b/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd index 4d386a3e7..a633b953b 100644 --- a/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd +++ b/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd @@ -1,32 +1,37 @@ class_name PopochiuHotspotFactory -extends 'res://addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd' +extends PopochiuRoomObjFactory -#region Public ##################################################################################### -func _init(_main_dock: Panel) -> void: - super(_main_dock) - _type = Constants.Types.HOTSPOT - _type_label = 'hotspot' - _obj_room_group = 'Hotspots' - _path_template = '/hotspots/%s/hotspot_%s' +#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 -func create(obj_name: String, room: PopochiuRoom) -> int: +#region Public ##################################################################################### +func create(param: PopochiuHotspotFactoryParam) -> int: # If everything goes well, this won't change. var result_code := ResultCodes.SUCCESS - - _setup_room(room) - _setup_name(obj_name) + + 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 - result_code = _copy_script_template() - if result_code != ResultCodes.SUCCESS: return result_code + if param.should_create_script: + result_code = _copy_script_template() + if result_code != ResultCodes.SUCCESS: return result_code - # ▓▓▓ LOCAL CODE ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + # ---- LOCAL CODE ------------------------------------------------------------------------------ # Create the instance var new_obj: PopochiuHotspot = _load_obj_base_scene() @@ -35,17 +40,37 @@ func create(obj_name: String, room: PopochiuRoom) -> int: new_obj.name = _pascal_name new_obj.script_name = _pascal_name new_obj.description = _snake_name.capitalize() - new_obj.cursor = Constants.CURSOR_TYPE.ACTIVE + new_obj.cursor = PopochiuResources.CURSOR_TYPE.ACTIVE + new_obj.interaction_polygon = param.interaction_polygon # Save the hostspot 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 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ - - # Add the object to its room - _add_resource_to_room() + # ---- 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_inventory_item.gd b/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd index 0c8597a7b..8770e85f3 100644 --- a/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd +++ b/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd @@ -1,15 +1,17 @@ -extends 'res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd' +extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd" class_name PopochiuInventoryItemFactory -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PUBLIC ░░░░ -func _init(_main_dock: Panel) -> void: - super(_main_dock) - _type = Constants.Types.INVENTORY_ITEM - _type_label = 'inventory_item' - _type_target = 'inventory_items' - _path_template = _main_dock.INVENTORY_ITEMS_PATH + '%s/inventory_item_%s' +#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 @@ -30,20 +32,20 @@ func create(obj_name: String) -> int: result_code = _create_script_from_template() if result_code != ResultCodes.SUCCESS: return result_code - # ▓▓▓ LOCAL CODE ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + # ---- LOCAL CODE ------------------------------------------------------------------------------ # Create the instance var new_obj: PopochiuInventoryItem = _load_obj_base_scene() - new_obj.name = 'Item' + _pascal_name + new_obj.name = "Item" + _pascal_name new_obj.script_name = _pascal_name new_obj.description = _pascal_name.capitalize() - new_obj.cursor = Constants.CURSOR_TYPE.USE + 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 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- # Save the scene (.tscn) result_code = _save_obj_scene(new_obj) @@ -53,3 +55,6 @@ func create(obj_name: String) -> int: _add_resource_to_popochiu() return result_code + + +#endregion diff --git a/addons/popochiu/editor/factories/factory_popochiu_marker.gd b/addons/popochiu/editor/factories/factory_popochiu_marker.gd index 07e431164..61a95c7a5 100644 --- a/addons/popochiu/editor/factories/factory_popochiu_marker.gd +++ b/addons/popochiu/editor/factories/factory_popochiu_marker.gd @@ -1,28 +1,30 @@ class_name PopochiuMarkerFactory -extends 'res://addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd' +extends PopochiuRoomObjFactory - -#region Public ##################################################################################### -func _init(_main_dock: Panel) -> void: - super(_main_dock) - _type = Constants.Types.MARKER - _type_label = 'marker' - _obj_room_group = 'Markers' - _path_template = '/markers/%s/marker_%s' +#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" -func create(obj_name: String, room: PopochiuRoom) -> int: +#endregion +#region Public ##################################################################################### +func create(param: PopochiuRoomObjFactoryParam) -> int: # If everything goes well, this won't change. var result_code := ResultCodes.SUCCESS - - _setup_room(room) - _setup_name(obj_name) + + 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 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + # ---- LOCAL CODE ------------------------------------------------------------------------------ # Create the instance var new_obj: Marker2D = Marker2D.new() new_obj.name = _pascal_name @@ -30,10 +32,11 @@ func create(obj_name: String, room: PopochiuRoom) -> int: # 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 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ - - # Add the object to its room - _add_resource_to_room() + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + if param.should_add_to_room: + # Add the object to its room + _add_resource_to_room() return result_code diff --git a/addons/popochiu/editor/factories/factory_popochiu_prop.gd b/addons/popochiu/editor/factories/factory_popochiu_prop.gd index 1c4a90a9e..2515ce94f 100644 --- a/addons/popochiu/editor/factories/factory_popochiu_prop.gd +++ b/addons/popochiu/editor/factories/factory_popochiu_prop.gd @@ -1,35 +1,37 @@ class_name PopochiuPropFactory -extends 'res://addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd' +extends PopochiuRoomObjFactory -#region Public ##################################################################################### -func _init(_main_dock: Panel) -> void: - super(_main_dock) - - _type = Constants.Types.PROP - _type_label = 'prop' - _obj_room_group = 'Props' - _path_template = '/props/%s/prop_%s' +#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" -func create( - obj_name: String, room: PopochiuRoom, is_interactive:bool = false, is_visible:bool = true -) -> int: +#endregion + +#region Public ##################################################################################### +func create(param: PopochiuPropFactoryParam) -> int: # If everything goes well, this won't change. var result_code := ResultCodes.SUCCESS - - _setup_room(room) - _setup_name(obj_name) + + 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) - result_code = _copy_script_template() - if result_code != ResultCodes.SUCCESS: return result_code + if param.should_create_script: + result_code = _copy_script_template() + if result_code != ResultCodes.SUCCESS: return result_code - # ▓▓▓ LOCAL CODE ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + # ---- LOCAL CODE ------------------------------------------------------------------------------ # Create the instance var new_obj: PopochiuProp = _load_obj_base_scene() @@ -38,14 +40,15 @@ func create( new_obj.name = _pascal_name new_obj.script_name = _pascal_name new_obj.description = _snake_name.capitalize() - new_obj.cursor = Constants.CURSOR_TYPE.ACTIVE - new_obj.clickable = is_interactive - new_obj.visible = is_visible + 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']: + if _snake_name in ["bg", "background"]: new_obj.baseline =\ -ProjectSettings.get_setting(PopochiuResources.DISPLAY_HEIGHT) / 2.0 new_obj.z_index = -1 @@ -53,12 +56,31 @@ func create( # 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 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + # ---- END OF LOCAL CODE ----------------------------------------------------------------------- + + if param.should_add_to_room: + # Add the object to its room + _add_resource_to_room() + + return result_code - # 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_region.gd b/addons/popochiu/editor/factories/factory_popochiu_region.gd index 987d14de0..d46458c46 100644 --- a/addons/popochiu/editor/factories/factory_popochiu_region.gd +++ b/addons/popochiu/editor/factories/factory_popochiu_region.gd @@ -1,56 +1,71 @@ class_name PopochiuRegionFactory -extends 'res://addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd' +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" -#region Public ##################################################################################### -func _init(_main_dock: Panel) -> void: - super(_main_dock) - _type = Constants.Types.REGION - _type_label = 'region' - _obj_room_group = 'Regions' - _path_template = '/regions/%s/region_%s' +#endregion -func create(obj_name: String, room: PopochiuRoom) -> int: +#region Public ##################################################################################### +func create(param: PopochiuRoomObjFactoryParam) -> int: # If everything goes well, this won't change. var result_code := ResultCodes.SUCCESS - - _setup_room(room) - _setup_name(obj_name) + + 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 - result_code = _copy_script_template() - if result_code != ResultCodes.SUCCESS: return result_code + if param.should_create_script: + result_code = _copy_script_template() + if result_code != ResultCodes.SUCCESS: return result_code - # ▓▓▓ LOCAL 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() - # Create a collision polygon as a child in the room scene - var collision := CollisionPolygon2D.new() - collision.name = 'InteractionPolygon' - collision.modulate = Color.CYAN - _add_visible_child(collision) - # ▓▓▓ END OF LOCAL CODE ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + return result_code - # 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_room.gd b/addons/popochiu/editor/factories/factory_popochiu_room.gd index 1c826417b..370c68829 100644 --- a/addons/popochiu/editor/factories/factory_popochiu_room.gd +++ b/addons/popochiu/editor/factories/factory_popochiu_room.gd @@ -1,16 +1,18 @@ -extends 'res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd' +extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd" class_name PopochiuRoomFactory -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PUBLIC ░░░░ -func _init(_main_dock: Panel) -> void: - super(_main_dock) - _type = Constants.Types.ROOM - _type_label = 'room' - _type_target = 'rooms' - _path_template = _main_dock.ROOMS_PATH + '%s/room_%s' +#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") -func create(obj_name: String, set_as_main:bool = false) -> int: +#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 @@ -30,13 +32,15 @@ func create(obj_name: String, set_as_main:bool = false) -> int: result_code = _create_script_from_template() if result_code != ResultCodes.SUCCESS: return result_code - # ▓▓▓ LOCAL CODE ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + # ---- LOCAL CODE ------------------------------------------------------------------------------ # Create the instance var new_obj: PopochiuRoom = _load_obj_base_scene() - new_obj.name = 'Room' + _pascal_name + new_obj.name = "Room" + _pascal_name new_obj.script_name = _pascal_name - # ▓▓▓ END OF LOCAL CODE ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + 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) @@ -45,14 +49,15 @@ func create(obj_name: String, set_as_main:bool = false) -> int: # Add the object to Popochiu dock list, plus open it in the editor _add_resource_to_popochiu() - # ▓▓▓ LOCAL CODE ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + # ---- 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: - _main_dock.set_main_scene( _scene.scene_file_path) - # TODO: next line should be in set_main_scene() function! - _dock_row.is_main = true # So the Heart icon shows - # ▓▓▓ LOCAL CODE ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + 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_walkable_area.gd b/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd index 0703464f1..5d8029286 100644 --- a/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd +++ b/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd @@ -1,32 +1,37 @@ class_name PopochiuWalkableAreaFactory -extends 'res://addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd' +extends PopochiuRoomObjFactory -#region Public ##################################################################################### -func _init(_main_dock: Panel) -> void: - super(_main_dock) - _type = Constants.Types.WALKABLE_AREA - _type_label = 'walkable_area' - _obj_room_group = 'WalkableAreas' - _path_template = '/walkable_areas/%s/walkable_area_%s' +#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 -func create(obj_name: String, room: PopochiuRoom) -> int: +#region Public ##################################################################################### +func create(param: PopochiuWalkableAreaFactoryParam) -> int: # If everything goes well, this won't change. var result_code := ResultCodes.SUCCESS - - _setup_room(room) - _setup_name(obj_name) + + 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 - result_code = _copy_script_template() - if result_code != ResultCodes.SUCCESS: return result_code + if param.should_create_script: + result_code = _copy_script_template() + if result_code != ResultCodes.SUCCESS: return result_code - # ▓▓▓ LOCAL CODE ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + # ---- LOCAL CODE ------------------------------------------------------------------------------ # Create the instance var new_obj: PopochiuWalkableArea = _load_obj_base_scene() @@ -36,31 +41,54 @@ func create(obj_name: String, room: PopochiuRoom) -> int: new_obj.script_name = _pascal_name new_obj.description = _snake_name.capitalize() - # 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 - - # Create a NavigationRegion2D with its polygon as a child in the room scene - var perimeter := NavigationRegion2D.new() - perimeter.name = 'Perimeter' - + # 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) ])) - polygon.make_polygons_from_outlines() + NavigationServer2D.bake_from_source_geometry_data( + polygon, NavigationMeshSourceGeometryData2D.new() + ) polygon.agent_radius = 0.0 + perimeter.navigation_polygon = polygon - perimeter.navpoly = polygon - perimeter.modulate = Color.GREEN - - _add_visible_child(perimeter) - # ▓▓▓ END OF LOCAL CODE ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ + if not param.navigation_polygon.is_empty(): + new_obj.interaction_polygon = param.navigation_polygon + new_obj.clear_and_bake(perimeter.navigation_polygon) - # Add the object to its room - _add_resource_to_room() + # 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/gizmos/gizmo2d.gd b/addons/popochiu/editor/gizmos/gizmo2d.gd new file mode 100644 index 000000000..37cea5431 --- /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 +# Convienence 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) + + # Caculate 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 postion 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/gizmo_clickable_plugin.gd b/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd new file mode 100644 index 000000000..7ea1d2e4c --- /dev/null +++ b/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd @@ -0,0 +1,282 @@ +@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, # TODO: enable this when the look_at_point logic is implemented + 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)) + # TODO: enable this when the look_at_point logic is implemented + # _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.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]) + # TODO: enable this when the look_at_point logic is implemented + #_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) + ) + # TODO: enable this when the look_at_point logic is implemented + # 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) + ) + # TODO: enable this when the look_at_point logic is implemented + # 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/plugin.cfg b/addons/popochiu/editor/gizmos/plugin.cfg new file mode 100644 index 000000000..d0e45dc58 --- /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 index aabbf4c88..eaab578b1 100644 --- a/addons/popochiu/editor/helpers/popochiu_editor_helper.gd +++ b/addons/popochiu/editor/helpers/popochiu_editor_helper.gd @@ -3,10 +3,315 @@ 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_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_gui_templates_helper.gd b/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd index bcc421f55..fe8d93718 100644 --- a/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd +++ b/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd @@ -2,8 +2,6 @@ extends Resource ## Helper class for operations related to the GUI templates -signal copy_completed - static var _template_id := "" static var _template_theme_path := "" @@ -13,7 +11,10 @@ static var _template_theme_path := "" static func copy_gui_template( template_name: String, on_progress: Callable, on_complete: Callable ) -> void: - if template_name == PopochiuResources.get_data_value("ui", "template", ""): + 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 tempalte.") on_complete.call() @@ -43,34 +44,29 @@ static func copy_gui_template( # ---- Make a copy of the selected GUI template ------------------------------------------------ if _create_scene(scene_path) != OK: - # TODO: Delete the graphic_interface folder and all its contents? - PopochiuUtils.print_error( - "[Popochiu] Couldn't create %s file" % PopochiuResources.GUI_GAME_SCENE - ) - + 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/graphic_interface/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) + await copy_components(scene_path, true) on_progress.call(60, "Creating scripts") # Create a copy of the corresponding commands template ----------------------------------------- - _copy_scripts(commands_template_path, PopochiuResources.GUI_COMMANDS, script_path, scene_path) + _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 graphic_interface.tscn so it uses the copy created above ---- + # 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( - "[Popochiu] Couldn't update graphic_interface.tscn script" - ) - + PopochiuUtils.print_error("Couldn't update gui.tscn script") return await _wait() @@ -83,8 +79,9 @@ static func copy_gui_template( 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() @@ -100,10 +97,11 @@ static func copy_component(source_scene_path: String) -> String: # 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) - - var target_scene_file := "%s/%s" % [target_folder, file_name] + packed_scene.resource_path = target_scene_file var err := ResourceSaver.save(packed_scene, target_scene_file) @@ -118,54 +116,15 @@ static func copy_component(source_scene_path: String) -> String: return "" # Move the dependencies of the source scene to the graphic interface folder - await _copy_components(source_scene_path) + await copy_components(source_scene_path) return target_scene_file -#endregion - -#region Private #################################################################################### -## Create the **graphic_interface.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/graphic_interface/ folder - if not FileAccess.file_exists(PopochiuResources.GUI_GAME_SCENE): - DirAccess.make_dir_recursive_absolute(PopochiuResources.GUI_GAME_FOLDER) - else: - # Remove the graphic_interface.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/graphic_interface/graphic_interface.tscn ------------------------------------------ - var gi_scene := load(scene_path).duplicate(true) - - 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 + "/" + file_name) - EditorInterface.get_resource_filesystem().scan() - - for dir_name: String in DirAccess.get_directories_at(dir_path): - var sub_dir_path := dir_path + "/" + 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 the components used by the original GUI template to the -## **res://game/graphic_interface/components/** folder so devs can play with those scenes without +## **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: +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 @@ -203,7 +162,7 @@ static func _copy_components(source_scene_path: String, is_gui_game_scene := fal 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, "graphic_interface_theme.tres" + target_folder, "gui_theme.tres" ] _template_theme_path = dependency_data.target_path elif not is_gui_game_scene: @@ -220,7 +179,7 @@ static func _copy_components(source_scene_path: String, is_gui_game_scene := fal # --- Make a copy of the original file ----------------------------------------------------- if source_file_path.get_extension() == "gd": - _copy_script(source_file_path, target_folder, dependency_data.target_path) + _copy_component_script(source_file_path, dependency_data.target_path) else: _copy_file(source_file_path, target_folder, dependency_data.target_path) @@ -229,7 +188,7 @@ static func _copy_components(source_scene_path: String, is_gui_game_scene := fal # 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) + await copy_components(source_file_path) if is_gui_game_scene: _update_dependencies(PopochiuResources.GUI_GAME_SCENE, dependencies_to_update) @@ -244,24 +203,76 @@ static func _copy_components(source_scene_path: String, is_gui_game_scene := fal await EditorInterface.get_resource_filesystem().filesystem_changed -static func _copy_script( - source_file_path: String, _target_folder: String, target_file_path: String +#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: - var file_write = FileAccess.open(target_file_path, FileAccess.WRITE) + # 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 load(source_file_path).is_tool(): - file_write.store_string("@tool\n") + if "class_name " in source_code: + source_code = source_code.replace("class_name Popochiu", "class_name GUI") - file_write.store_string('extends "%s"' % source_file_path) + 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 ----------------------------------------------------- + # ---- 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) @@ -280,11 +291,14 @@ static func _update_dependencies(scene_path: String, dependencies_to_update: Arr file_read.close() for dic: Dictionary in dependencies_to_update: - text = text.replace(dic.source_path, dic.target_path) + var target_path: String = dic.target_path - var target_uid := ResourceUID.id_to_text( - ResourceLoader.get_resource_uid(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 @@ -298,14 +312,14 @@ static func _update_dependencies(scene_path: String, dependencies_to_update: Arr ## 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_scripts( +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 + "graphic_interface_template.gd" + 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() @@ -319,8 +333,8 @@ static func _copy_scripts( script_file.close() -## Updates the script of the created **res://game/graphic_interface/graphic_interface.tscn** file so -## it uses the one created in `_copy_scripts(...)`. +## 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( @@ -329,16 +343,17 @@ static func _update_scene_script(script_path: String) -> int: scene.set_script(load(script_path)) # Set the name of the root node - scene.name = "GraphicInterface" + 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 EditorInterface.get_base_control().get_tree().create_timer(randf_range(0.5, max)).timeout + await PopochiuEditorHelper.secs_passed(randf_range(0.5, max)) #endregion 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 000000000..b13ff1a86 --- /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 accross 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_types_helper.gd b/addons/popochiu/editor/helpers/popochiu_types_helper.gd deleted file mode 100644 index 4be432f90..000000000 --- a/addons/popochiu/editor/helpers/popochiu_types_helper.gd +++ /dev/null @@ -1,28 +0,0 @@ -extends Resource - -# This class holds logic to help with the management of Popochiu objects. -# ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ - - -# Functions used to know the type of a Node (or group of Nodes) when this type of -# validation is required from the plugin. -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_character(node: Node) -> bool: - return node is PopochiuCharacter - - -static func is_walkable_area(node: Node) -> bool: - return node is PopochiuWalkableArea - -## TODO: provide more helpers like this maybe? - -## TODO: If and when #67 is ready, add static facade metods to create items -## so we can just pass this object as entry point for all operations -## on Popochiu objects diff --git a/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd index 412bba605..20c28ee72 100644 --- a/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd +++ b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd @@ -15,7 +15,7 @@ var _anim_tag_state: Dictionary = {} @onready var clickable_toggle = $Panel/HBoxContainer/Clickable -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ GODOT ░░░░ +#region Godot ###################################################################################### func _ready(): # Common toggle icons import_toggle.icon = get_theme_icon('Load', 'EditorIcons') @@ -25,7 +25,9 @@ func _ready(): clickable_toggle.icon = get_theme_icon('ToolSelect', 'EditorIcons') -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PUBLIC ░░░░ +#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)) @@ -41,12 +43,16 @@ func show_prop_buttons(): clickable_toggle.visible = true -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ SET & GET ░░░░ +#endregion + +#region SetGet ##################################################################################### func get_cfg() -> Dictionary: return _anim_tag_state -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PRIVATE ░░░░ +#endregion + +#region Private #################################################################################### func _setup_scene(): import_toggle.button_pressed = _anim_tag_state.import loops_toggle.button_pressed = _anim_tag_state.loops @@ -83,3 +89,6 @@ func _on_visible_toggled(button_pressed): 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.tscn b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn index 3193d194e..cc20ff822 100644 --- a/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn +++ b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn @@ -4,17 +4,17 @@ [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_77wem"] -[sub_resource type="Image" id="Image_33eob"] +[sub_resource type="Image" id="Image_vdhps"] data = { -"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 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, 131, 255, 255, 255, 0, 255, 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, 131, 255, 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, 93, 93, 131, 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, 252, 255, 93, 93, 252, 255, 93, 93, 252, 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, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 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, 93, 93, 55, 255, 97, 97, 58, 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, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 98, 98, 47, 255, 97, 97, 42, 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, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 94, 94, 46, 255, 93, 93, 236, 255, 93, 93, 233, 255, 97, 97, 42, 255, 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, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"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_i0lab"] -image = SubResource("Image_33eob") +[sub_resource type="ImageTexture" id="ImageTexture_c80ss"] +image = SubResource("Image_vdhps") [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_sd1l8"] @@ -51,7 +51,7 @@ size_flags_horizontal = 4 size_flags_vertical = 3 tooltip_text = "This prop will be visible" toggle_mode = true -icon = SubResource("ImageTexture_i0lab") +icon = SubResource("ImageTexture_c80ss") flat = true [node name="Clickable" type="Button" parent="Panel/HBoxContainer"] @@ -61,7 +61,7 @@ size_flags_horizontal = 4 size_flags_vertical = 3 tooltip_text = "This prop will be clickable" toggle_mode = true -icon = SubResource("ImageTexture_i0lab") +icon = SubResource("ImageTexture_c80ss") flat = true [node name="Separator" type="Panel" parent="Panel/HBoxContainer"] @@ -76,7 +76,7 @@ size_flags_horizontal = 4 size_flags_vertical = 3 tooltip_text = "Import this animation" toggle_mode = true -icon = SubResource("ImageTexture_i0lab") +icon = SubResource("ImageTexture_c80ss") flat = true [node name="Loops" type="Button" parent="Panel/HBoxContainer"] @@ -85,7 +85,7 @@ size_flags_horizontal = 4 size_flags_vertical = 3 tooltip_text = "Set animation as looping" toggle_mode = true -icon = SubResource("ImageTexture_i0lab") +icon = SubResource("ImageTexture_c80ss") flat = true [connection signal="toggled" from="Panel/HBoxContainer/Visible" to="." method="_on_visible_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 index b494b7ae9..613983de6 100644 --- a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd +++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd @@ -4,27 +4,22 @@ 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... ? +# 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 main_dock: Panel var file_system: EditorFileSystem - -# External logic +# ---- External logic var _animation_tag_row_scene: PackedScene =\ -preload('res://addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn') +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 +# ---- References for children scripts var _root_node: Node var _options: Dictionary - -# Importer parameters variables +# ---- Importer parameters variables var _source: String = "" var _tags_cache: Array = [] var _file_dialog_aseprite: FileDialog @@ -34,7 +29,7 @@ var _output_folder := "" var _out_folder_default := "[Same as scene]" -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ GODOT ░░░░ +#region Godot ###################################################################################### func _ready(): _set_elements_styles() @@ -47,7 +42,7 @@ func _ready(): if result == RESULT_CODE.SUCCESS: _show_importer() else: - printerr(RESULT_CODE.get_error_message(result)) + PopochiuUtils.print_error(RESULT_CODE.get_error_message(result)) _show_warning() # Load inspector dock configuration from node @@ -60,7 +55,9 @@ func _ready(): _set_options_visible(cfg.get("op_exp")) -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PRIVATE ░░░░ +#endregion + +#region Private #################################################################################### func _check_aseprite() -> int: if not _aseprite.check_command_path(): return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FULL_PATH @@ -94,14 +91,14 @@ func _load_config(cfg): _set_source(cfg.source) _output_folder = cfg.get("o_folder", "") - get_node('%OutFolderButton').text = ( + 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( + 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( + get_node("%WipeOldAnimationsCheckButton").set_pressed_no_signal( cfg.get("wipe_old_anims", false) ) @@ -115,11 +112,11 @@ func _save_config(): var cfg := { "source": _source, "tags": _tags_cache, - "op_exp": get_node('%Options').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(), + "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) @@ -135,20 +132,20 @@ func _load_default_config(): _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( + 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 + get_node("%SourceButton").text = _source + get_node("%SourceButton").tooltip_text = _source func _on_source_pressed(): @@ -187,9 +184,9 @@ func _on_import_pressed(): "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(), + "output_filename": get_node("%OutFileName").text, + "only_visible_layers": get_node("%VisibleLayersCheckButton").is_pressed(), + "wipe_old_animations": get_node("%WipeOldAnimationsCheckButton").is_pressed(), } _save_config() @@ -241,7 +238,7 @@ func _populate_tags(tags: Array): continue var tag_row: AnimationTagRow = _animation_tag_row_scene.instantiate() - get_node('%Tags').add_child(tag_row) + 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) @@ -256,8 +253,8 @@ func _customize_tag_ui(tagrow: AnimationTagRow): func _empty_tags_container(): # Clean the inspector tags container empty - for tl in get_node('%Tags').get_children(): - get_node('%Tags').remove_child(tl) + for tl in get_node("%Tags").get_children(): + get_node("%Tags").remove_child(tl) tl.queue_free() @@ -272,9 +269,9 @@ func _merge_with_cache(tags: Array) -> Array: 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) \ + result.push_back( + tags_cache_index[tags[i].tag_name] + if tags_cache_index.has(tags[i].tag_name) else tags[i] ) @@ -283,7 +280,7 @@ func _merge_with_cache(tags: Array) -> Array: func _get_tags_from_ui() -> Array: var tags_list = [] - for tag_row in get_node('%Tags').get_children(): + for tag_row in get_node("%Tags").get_children(): var tag_row_cfg = tag_row.get_cfg() if tag_row_cfg.tag_name == "": continue @@ -294,14 +291,14 @@ func _get_tags_from_ui() -> Array: func _get_tags_from_source() -> Array: var tags_found = _list_tags(ProjectSettings.globalize_path(_source)) if typeof(tags_found) == TYPE_INT: - printerr(RESULT_CODE.get_error_message(tags_found)) + 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 + tag_name = t }) return tags_list @@ -309,25 +306,24 @@ func _get_tags_from_source() -> Array: func _show_message( message: String, title: String = "", object: Object = null, method := "" ): - var _warning_dialog = AcceptDialog.new() + var warning_dialog = AcceptDialog.new() if title != "": - _warning_dialog.title = title + warning_dialog.title = title - _warning_dialog.dialog_text = message - _warning_dialog.popup_window = true + warning_dialog.dialog_text = message + warning_dialog.popup_window = true - var callback := Callable(_warning_dialog, "queue_free") + 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) + warning_dialog.confirmed.connect(callback) + warning_dialog.close_requested.connect(callback) - main_dock.add_child(_warning_dialog) - _warning_dialog.popup_centered() + PopochiuEditorHelper.show_dialog(warning_dialog) func _show_confirmation(message: String, title: String = ""): @@ -347,8 +343,8 @@ func _on_options_title_toggled(button_pressed): func _set_options_visible(is_visible): - get_node('%Options').visible = is_visible - get_node('%OptionsTitle').icon = ( + 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) ) @@ -373,7 +369,7 @@ func _create_output_folder_selection(): func _on_output_folder_selected(path): _output_folder = path - get_node('%OutFolderButton').text = ( + get_node("%OutFolderButton").text = ( _output_folder if _output_folder != "" else _out_folder_default ) _output_folder_dialog.queue_free() @@ -385,32 +381,35 @@ func _set_elements_styles(): 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) + 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("%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')) + 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 + 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 + 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 + 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 + -## TODO: Introduce layer selection list, more or less as tags +#endregion 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 index 6fe2020ee..cb195bc6c 100644 --- a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.tscn +++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.tscn @@ -14,32 +14,32 @@ bg_color = Color(1, 0.364706, 0.364706, 1) draw_center = false corner_detail = 1 -[node name="sprite_inspector_dock" type="PanelContainer"] +[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="."] +[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"] +[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"] +[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"] +[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"] +[node name="SourceButton" type="Button" parent="Margin/Importer/Source"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 @@ -47,53 +47,53 @@ size_flags_stretch_ratio = 2.0 text = "[empty]" clip_text = true -[node name="RescanButton" type="Button" parent="margin/Importer/Source"] +[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"] +[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"] +[node name="TagsTitle" type="Button" parent="Margin/Importer/TagsTitleBar"] 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"] +[node name="Tags" type="VBoxContainer" parent="Margin/Importer"] unique_name_in_owner = true layout_mode = 2 -[node name="OptionsTitleBar" type="PanelContainer" parent="margin/Importer"] +[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"] +[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"] +[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"] +[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"] +[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"] +[node name="OutFolderButton" type="Button" parent="Margin/Importer/Options/OutFolder"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 @@ -101,43 +101,43 @@ size_flags_stretch_ratio = 2.0 text = "[empty]" clip_text = true -[node name="OutFile" type="HBoxContainer" parent="margin/Importer/Options"] +[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"] +[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"] +[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"] +[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"] +[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"] +[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"] +[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"] +[node name="Label" type="Label" parent="Margin/Importer/Options/WipeOldAnimations"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 2.0 @@ -145,29 +145,29 @@ tooltip_text = "Set this to OFF if you want to add new animations on top of old mouse_filter = 0 text = "Wipe old animations" -[node name="WipeOldAnimationsCheckButton" type="CheckButton" parent="margin/Importer/Options/WipeOldAnimations"] +[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"] +[node name="Import" type="Button" parent="Margin/Importer"] layout_mode = 2 text = "Import" -[node name="Reset" type="Button" parent="margin/Importer"] +[node name="Reset" type="Button" parent="Margin/Importer"] layout_mode = 2 text = "Reset Preferences" -[node name="Warning" type="VBoxContainer" parent="margin"] +[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"] +[node name="HBoxContainer" type="HBoxContainer" parent="Margin/Warning"] layout_mode = 2 -[node name="WarningPanel" type="Panel" parent="margin/Warning/HBoxContainer"] +[node name="WarningPanel" type="Panel" parent="Margin/Warning/HBoxContainer"] unique_name_in_owner = true custom_minimum_size = Vector2(222, 50) layout_mode = 2 @@ -175,7 +175,7 @@ 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"] +[node name="WarningLabel" type="Label" parent="Margin/Warning/HBoxContainer/WarningPanel"] unique_name_in_owner = true custom_minimum_size = Vector2(0, 42) layout_mode = 0 @@ -188,21 +188,21 @@ text = "Error loading Aseprite Importer! Check Output panel for details." horizontal_alignment = 1 -[node name="Info" type="VBoxContainer" parent="margin"] +[node name="Info" type="VBoxContainer" parent="Margin"] unique_name_in_owner = true layout_mode = 2 -[node name="HBoxContainer" type="HBoxContainer" parent="margin/Info"] +[node name="HBoxContainer" type="HBoxContainer" parent="Margin/Info"] layout_mode = 2 -[node name="InfoPanel" type="Panel" parent="margin/Info/HBoxContainer"] +[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"] +[node name="InfoLabel" type="Label" parent="Margin/Info/HBoxContainer/InfoPanel"] custom_minimum_size = Vector2(0, 42) layout_mode = 0 anchor_right = 1.0 @@ -212,13 +212,13 @@ 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_options_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"] +[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_options_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 index 97d8e1996..1e3a7a3a9 100644 --- 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 @@ -9,7 +9,9 @@ var _animation_creator = preload( #region Godot ###################################################################################### func _ready(): if not target_node.has_node("AnimationPlayer"): - printerr(RESULT_CODE.get_error_message(RESULT_CODE.ERR_NO_ANIMATION_PLAYER_FOUND)) + 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() @@ -39,7 +41,7 @@ func _on_import_pressed(): _importing = false if typeof(result) == TYPE_INT and result != RESULT_CODE.SUCCESS: - printerr(RESULT_CODE.get_error_message(result)) + 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!") 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 index be5538c37..7b036a94d 100644 --- 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 @@ -5,7 +5,7 @@ var _animation_creator = preload(\ "res://addons/popochiu/editor/importers/aseprite/animation_creator.gd").new() -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ GODOT ░░░░ +#region Godot ###################################################################################### func _ready(): # Instantiate animation creator _animation_creator.init(_aseprite, file_system) @@ -13,7 +13,9 @@ func _ready(): super() -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PRIVATE ░░░░ +#endregion + +#region Private #################################################################################### func _on_import_pressed(): # Set everything up # This will populate _root_node and _options class variables @@ -30,7 +32,7 @@ func _on_import_pressed(): # Always convert to PascalCase as a standard # TODO: check Godot 4 standards, I can't find info - var prop_name = tag.tag_name.to_pascal_case() + 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) @@ -70,7 +72,7 @@ func _on_import_pressed(): _importing = false if typeof(result) == TYPE_INT and result != RESULT_CODE.SUCCESS: - printerr(RESULT_CODE.get_error_message(result)) + 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 @@ -88,8 +90,14 @@ func _customize_tag_ui(tag_row: AnimationTagRow): func _create_prop(name: String, is_clickable: bool = true, is_visible: bool = true): - var factory = PopochiuPropFactory.new(main_dock) - if factory.create(name, _root_node, is_clickable, is_visible) != ResultCodes.SUCCESS: + 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() @@ -98,9 +106,12 @@ 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: - push_error( - "[Popochiu] Couldn't save animations for prop %s at %s" % + 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/inspector/aseprite_importer_inspector_plugin.gd b/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd index 162410cb7..7ba1aef11 100644 --- a/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd +++ b/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd @@ -6,11 +6,10 @@ 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 main_dock: Panel var _target_node: Node -#region Virtual #################################################################################### +#region Godot ###################################################################################### func _can_handle(object): if object.has_method("get_parent") and object.get_parent() is Node2D: return false @@ -19,25 +18,26 @@ func _can_handle(object): 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): - if name != 'popochiu_placeholder': return false - +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 # Instanciate 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() - dock.main_dock = main_dock # TODO: change for SignalBus - # Add the dock to the inspector add_custom_control(dock) return true diff --git a/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd b/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd index 5552e7305..3757f523a 100644 --- a/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd +++ b/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd @@ -1,7 +1,7 @@ extends EditorInspectorPlugin -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ VIRTUAL ░░░░ +#region Godot ###################################################################################### func _can_handle(object: Object) -> bool: return object is PopochiuAudioCue @@ -15,7 +15,7 @@ func _parse_property( usage, wide: bool ) -> bool: - if not object is PopochiuAudioCue or path != 'bus': + if not object is PopochiuAudioCue or path != "bus": return false var ep := EditorProperty.new() @@ -32,7 +32,9 @@ func _parse_property( return true -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PRIVATE ░░░░ +#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) @@ -45,3 +47,6 @@ func _update_buses_list(ob: OptionButton, pac: PopochiuAudioCue) -> void: 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/character_inspector_plugin.gd b/addons/popochiu/editor/inspector/character_inspector_plugin.gd index a60921745..f4c86cd21 100644 --- a/addons/popochiu/editor/inspector/character_inspector_plugin.gd +++ b/addons/popochiu/editor/inspector/character_inspector_plugin.gd @@ -9,6 +9,9 @@ func _can_handle(object: Object) -> bool: func _parse_begin(object: Object) -> void: + if object.get_class() == "EditorDebuggerRemoteObject": + return + if not object.get_parent() is Node2D: return var panel := PanelContainer.new() @@ -22,12 +25,12 @@ func _parse_begin(object: Object) -> void: button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND panel.add_theme_stylebox_override( - 'panel', + "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.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), @@ -49,10 +52,19 @@ func _parse_property( 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 [ - 'position', 'visible', 'modulate', 'self_modulate', 'light_mask' + "baseline", + "walk_to_point", + "position", + "visible", + "modulate", + "self_modulate", + "light_mask", ]: return true @@ -63,7 +75,7 @@ func _parse_property( #region Private #################################################################################### func _open_scene(path: String) -> void: - EditorInterface.set_main_screen_editor('2D') + EditorInterface.set_main_screen_editor("2D") EditorInterface.open_scene_from_path(path) diff --git a/addons/popochiu/editor/inspector/walkable_area_inspector_plugin.gd b/addons/popochiu/editor/inspector/walkable_area_inspector_plugin.gd deleted file mode 100644 index 96e7fc738..000000000 --- a/addons/popochiu/editor/inspector/walkable_area_inspector_plugin.gd +++ /dev/null @@ -1,84 +0,0 @@ -extends EditorInspectorPlugin - - -#region Virtual #################################################################################### -func _can_handle(object: Object) -> bool: - if object is PopochiuWalkableArea or object is NavigationRegion2D: - return true - return false - - -func _parse_begin(object: Object) -> void: - if object is PopochiuWalkableArea: - _parse_walkable_area(object) - if object is NavigationRegion2D: - _parse_navigation_polygon_instance(object) - - -#endregion - -#region Private #################################################################################### -func _parse_walkable_area(object: Object) -> void: - var panel := PanelContainer.new() - var hbox := HBoxContainer.new() - var button := Button.new() # Adding a button to edit polygon - - panel.add_theme_stylebox_override( - 'panel', - panel.get_theme_stylebox("sub_inspector_bg11", "Editor") - ) - - hbox.custom_minimum_size.y = 42.0 - hbox.alignment = HBoxContainer.ALIGNMENT_CENTER - button.text = "Edit Polygon" - button.size_flags_horizontal = Control.SIZE_EXPAND_FILL - button.alignment = HORIZONTAL_ALIGNMENT_CENTER - button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND - - button.pressed.connect(_find_polygon_instance.bind(object), CONNECT_DEFERRED) - - hbox.add_child(button) - panel.add_child(hbox) - - add_custom_control(panel) - - -func _find_polygon_instance(object: Object) -> void: - if not object is PopochiuWalkableArea: return - var children = object.get_children() - PopochiuEditorHelper.select_node(children[0]) - - -func _parse_navigation_polygon_instance(object: Object) -> void: - if not object.get_parent() is PopochiuWalkableArea: return - - var panel := PanelContainer.new() - var hbox := HBoxContainer.new() - var button := Button.new() # Adding a button to edit polygon - - panel.add_theme_stylebox_override( - 'panel', - panel.get_theme_stylebox("sub_inspector_bg11", "Editor") - ) - - hbox.custom_minimum_size.y = 42.0 - hbox.alignment = HBoxContainer.ALIGNMENT_CENTER - button.text = "Editing done" - button.size_flags_horizontal = Control.SIZE_EXPAND_FILL - button.alignment = HORIZONTAL_ALIGNMENT_CENTER - button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND - - button.pressed.connect(_back_to_walkable_area.bind(object), CONNECT_DEFERRED) - - hbox.add_child(button) - panel.add_child(hbox) - - add_custom_control(panel) - - -func _back_to_walkable_area(object: Object) -> void: - if not object.get_parent() is PopochiuWalkableArea: return - PopochiuEditorHelper.select_node(object.get_parent()) - - -#endregion diff --git a/addons/popochiu/editor/main_dock/audio_row/popochiu_audio_row.gd b/addons/popochiu/editor/main_dock/audio_row/popochiu_audio_row.gd deleted file mode 100644 index 38e2c9c3d..000000000 --- a/addons/popochiu/editor/main_dock/audio_row/popochiu_audio_row.gd +++ /dev/null @@ -1,284 +0,0 @@ -@tool -extends HBoxContainer - -signal target_clicked(type) -signal deleted(file_path) - -enum MenuOptions { ADD_TO_MUSIC, ADD_TO_SFX, ADD_TO_VOICE, ADD_TO_UI, DELETE } - -const SELECTED_FONT_COLOR := Color('706deb') -const AudioCue := preload('res://addons/popochiu/engine/audio_manager/audio_cue.gd') - -var file_name: String -var file_path: String -var audio_cue: AudioCue -var cue_group: String -var main_dock: Panel : set = _set_main_dock -var stream_player: AudioStreamPlayer -var audio_tab: VBoxContainer = null - -var _current := 0.0 -var _confirmation_dialog: ConfirmationDialog -var _delete_all_checkbox: CheckBox - -@onready var _label: Label = find_child('Label') -@onready var _dflt_font_color: Color = _label.get_theme_color('font_color') -@onready var _menu_btn: MenuButton = find_child('MenuButton') -@onready var _menu_popup: PopupMenu = _menu_btn.get_popup() -@onready var _btn_play: Button = find_child('Play') -@onready var _btn_stop: Button = find_child('Stop') -@onready var _menu_cfg: Array = [ - { - id = MenuOptions.ADD_TO_MUSIC, - icon = preload('res://addons/popochiu/icons/music.png'), - label = 'Add to Music' - }, - { - id = MenuOptions.ADD_TO_SFX, - icon = preload('res://addons/popochiu/icons/sfx.png'), - label = 'Add to Sound effects' - }, - { - id = MenuOptions.ADD_TO_VOICE, - icon = preload('res://addons/popochiu/icons/voice.png'), - label = 'Add to Voices' - }, - { - id = MenuOptions.ADD_TO_UI, - icon = preload('res://addons/popochiu/icons/ui.png'), - label = 'Add to Graphic interface' - }, - null, - { - id = MenuOptions.DELETE, - icon = get_theme_icon('Remove', 'EditorIcons'), - label = 'Remove' - } -] - - -#region Godot ###################################################################################### -func _ready() -> void: - _label.text = file_name if file_name else name - tooltip_text = file_path if file_name else audio_cue.resource_path - _menu_btn.icon = get_theme_icon('GuiTabMenu', 'EditorIcons') - _btn_play.icon = get_theme_icon('MainPlay', 'EditorIcons') - _btn_stop.icon = get_theme_icon('Stop', 'EditorIcons') - - # Crear menú contextual - _create_menu() - - gui_input.connect(_open_in_inspector) - _menu_popup.id_pressed.connect(_menu_item_pressed) - _btn_play.pressed.connect(_play) - _btn_stop.pressed.connect(_stop) - - if is_instance_valid(audio_cue): - _label.text = audio_cue.resource_name - name = audio_cue.resource_name - - _menu_popup.remove_item( - _menu_popup.get_item_index(MenuOptions.ADD_TO_MUSIC) - ) - _menu_popup.remove_item( - _menu_popup.get_item_index(MenuOptions.ADD_TO_SFX) - ) - _menu_popup.remove_item( - _menu_popup.get_item_index(MenuOptions.ADD_TO_VOICE) - ) - _menu_popup.remove_item( - _menu_popup.get_item_index(MenuOptions.ADD_TO_UI) - ) - - -#endregion - -#region Public ##################################################################################### -func select() -> void: - if is_instance_valid(audio_tab.last_selected): - audio_tab.last_selected.deselect() - - EditorInterface.select_file(audio_cue.resource_path) - EditorInterface.edit_resource(audio_cue) - _label.add_theme_color_override('font_color', SELECTED_FONT_COLOR) - audio_tab.last_selected = self - - -func deselect() -> void: - _label.add_theme_color_override('font_color', _dflt_font_color) - - -#endregion - -#region SetGet ##################################################################################### -func _set_main_dock(value: Panel) -> void: - main_dock = value - _confirmation_dialog = main_dock.delete_dialog - _delete_all_checkbox = _confirmation_dialog.find_child('CheckBox') - - -#endregion - -#region Private #################################################################################### -func _create_menu() -> void: - _menu_popup.clear() - - for option in _menu_cfg: - if option: - _menu_popup.add_icon_item( - option.icon, - option.label, - option.id - ) - else: - _menu_popup.add_separator() - - -func _open_in_inspector(event: InputEvent) -> void: - var mouse_event: = event as InputEventMouseButton - if is_instance_valid(audio_cue) and mouse_event\ - and mouse_event.button_index == MOUSE_BUTTON_LEFT and mouse_event.pressed: - select() - - -func _menu_item_pressed(id: int) -> void: - match id: - MenuOptions.ADD_TO_MUSIC: - target_clicked.emit('music') - MenuOptions.ADD_TO_SFX: - target_clicked.emit('sfx') - MenuOptions.ADD_TO_VOICE: - target_clicked.emit('voice') - MenuOptions.ADD_TO_UI: - target_clicked.emit('ui') - MenuOptions.DELETE: - _ask_basic_delete() - - -func _play() -> void: - if is_instance_valid(audio_tab.last_played)\ - and audio_tab.last_played.get_instance_id() != get_instance_id(): - audio_tab.last_played._stop() - - if not is_instance_valid(audio_cue): - var stream: AudioStream = load(file_path) - stream.loop = false - stream_player.stream = stream - elif not stream_player.stream or\ - stream_player.stream.resource_path != audio_cue.audio.resource_path: - stream_player.stream = audio_cue.audio - stream_player.pitch_scale = audio_cue.get_pitch_scale() - stream_player.volume_db = audio_cue.volume - - if stream_player.is_playing(): - _current = stream_player.get_playback_position() - stream_player.finished.disconnect(_stop) - stream_player.stop() - _btn_play.icon = _btn_play.get_theme_icon('MainPlay', 'EditorIcons') - else: - stream_player.finished.connect(_stop) - stream_player.play(_current) - _btn_play.icon = _btn_play.get_theme_icon('Pause', 'EditorIcons') - audio_tab.last_played = self - - -func _stop() -> void: - _current = 0.0 - stream_player.stop() - stream_player.stream = null - _label.add_theme_color_override('font_color', _dflt_font_color) - _btn_play.icon = _btn_play.get_theme_icon('MainPlay', 'EditorIcons') - - if stream_player.finished.is_connected(_stop): - stream_player.finished.disconnect(_stop) - - audio_tab.last_played = null - - -# Abre un popup de confirmación para saber si la desarrolladora quiere eliminar -# el objeto del núcleo del plugin y del sistema. -func _ask_basic_delete() -> void: - _confirmation_dialog.get_cancel_button().pressed.connect(_disconnect_popup) - - if is_instance_valid(audio_cue): - main_dock.show_confirmation( - 'Remove %s' % audio_cue.resource_name, - 'This will remove the [b]%s[/b] resource.'\ - % audio_cue.resource_name +\ - ' Calls to this audio in scripts will not work anymore.' +\ - ' This action cannot be reversed. Continue?', - 'Delete [b]%s[/b] file too?' % audio_cue.resource_path +\ - ' (cannot be reversed)' - ) - - _confirmation_dialog.confirmed.connect(_remove_in_audio_manager) - else: - main_dock.show_confirmation( - '[b]%s[/b] file deletion' % file_name, - '%s will be deleted in filesystem.' % file_path +\ - ' This action cannot be reversed. Continue?' - ) - - _confirmation_dialog.confirmed.connect( - _delete_from_file_system.bind(file_path) - ) - - -func _remove_in_audio_manager() -> void: - _confirmation_dialog.confirmed.disconnect(_remove_in_audio_manager) - - # Remove the AudioCue from PopochiuData.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 - ) - - # Add the audio file to the "Not assigned" group - deleted.emit(audio_cue.audio.resource_path) - - if _delete_all_checkbox.pressed: - _delete_from_file_system(audio_cue.resource_path) - else: - queue_free() - - -func _delete_from_file_system(path: String) -> void: - # Delete the AudioCue .tres file from the file system - var err: int = DirAccess.remove_absolute(path) - EditorInterface.get_resource_filesystem().update_file(path) - - if err != OK: - push_error('[Popochiu(err_code:%d)] Could not delete file %s' %\ - [err, path]) - return - - _disconnect_popup() - queue_free() - - -# Disconnect from delete popup -func _disconnect_popup() -> void: - if _confirmation_dialog.confirmed.is_connected(_remove_in_audio_manager): - _confirmation_dialog.confirmed.disconnect(_remove_in_audio_manager) - - if _confirmation_dialog.confirmed.is_connected(_delete_from_file_system): - # File deletion cancelled - _confirmation_dialog.confirmed.disconnect(_delete_from_file_system) - - -#endregion diff --git a/addons/popochiu/editor/main_dock/audio_row/popochiu_audio_row.tscn b/addons/popochiu/editor/main_dock/audio_row/popochiu_audio_row.tscn deleted file mode 100644 index 87105e429..000000000 --- a/addons/popochiu/editor/main_dock/audio_row/popochiu_audio_row.tscn +++ /dev/null @@ -1,54 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://byogegq0400tm"] - -[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/audio_row/popochiu_audio_row.gd" id="1_s65uw"] - -[sub_resource type="Image" id="Image_w1nfr"] -data = { -"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), -"format": "LumAlpha8", -"height": 16, -"mipmaps": false, -"width": 16 -} - -[sub_resource type="ImageTexture" id="2"] -image = SubResource("Image_w1nfr") - -[node name="PopochiuAudioRow" type="HBoxContainer"] -offset_right = 320.0 -offset_bottom = 40.0 -script = ExtResource("1_s65uw") - -[node name="Label" type="Label" parent="."] -clip_contents = true -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_stretch_ratio = 0.8 -text = "PopochiuAudioRow" -clip_text = true - -[node name="Panel" type="Panel" parent="."] -layout_mode = 2 -size_flags_horizontal = 3 -mouse_filter = 1 - -[node name="HBoxContainer" type="HBoxContainer" parent="Panel"] -layout_mode = 0 -anchor_right = 1.0 -anchor_bottom = 1.0 - -[node name="Play" type="Button" parent="Panel/HBoxContainer"] -layout_mode = 2 -mouse_filter = 1 -icon = SubResource("2") -flat = true - -[node name="Stop" type="Button" parent="Panel/HBoxContainer"] -layout_mode = 2 -mouse_filter = 1 -icon = SubResource("2") -flat = true - -[node name="MenuButton" type="MenuButton" parent="Panel/HBoxContainer"] -layout_mode = 2 -icon = SubResource("2") diff --git a/addons/popochiu/editor/main_dock/object_row/popochiu_object_row.gd b/addons/popochiu/editor/main_dock/object_row/popochiu_object_row.gd deleted file mode 100644 index eec680d6d..000000000 --- a/addons/popochiu/editor/main_dock/object_row/popochiu_object_row.gd +++ /dev/null @@ -1,709 +0,0 @@ -@tool -extends HBoxContainer -## The row that is created for Rooms, Characters, Inventory items, Dialogs, Props, Hotspots, Regions -## and Markers in the dock. - -signal clicked(node) - -enum MenuOptions { - ADD_TO_CORE, - CREATE_STATE_SCRIPT, - SET_AS_MAIN, - SET_AS_PC, - START_WITH_IT, - CREATE_PROP_SCRIPT, - DELETE -} - -const SELECTED_FONT_COLOR := Color('706deb') -const PLAYER_CHARACTER_ICON := preload('res://addons/popochiu/icons/player_character.png') -const INVENTORY_START_ICON := preload('res://addons/popochiu/icons/inventory_item_start.png') -const ROOM_STATE_TEMPLATE := 'res://addons/popochiu/engine/templates/room_state_template.gd' -const CHARACTER_STATE_TEMPLATE :=\ -'res://addons/popochiu/engine/templates/character_state_template.gd' -const INVENTORY_ITEM_STATE_TEMPLATE :=\ -'res://addons/popochiu/engine/templates/inventory_item_state_template.gd' -const PROP_SCRIPT_TEMPLATE := 'res://addons/popochiu/engine/templates/prop_template.gd' -const Constants := preload('res://addons/popochiu/popochiu_resources.gd') -const AudioCue := preload('res://addons/popochiu/engine/audio_manager/audio_cue.gd') - -var type := -1 -var path := '' -var node_path := '' -var main_dock: Panel : set = set_main_dock -var is_main := false : set = set_is_main -var is_pc := false : set = set_is_pc -var is_on_start := false : set = set_is_on_start -var is_menu_hidden := false - -var _delete_dialog: ConfirmationDialog -var _delete_all_checkbox: CheckBox - -@onready var _label: Label = find_child('Label') -@onready var _dflt_font_color: Color = _label.get_theme_color('font_color') -@onready var _fav_icon: TextureRect = find_child('FavIcon') -@onready var btn_play: Button = %BtnPlay -@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 -@onready var btn_menu: MenuButton = %BtnMenu -@onready var menu_popup: PopupMenu = btn_menu.get_popup() -@onready var menu_cfg: Array = [ - # Room, Character, Inventory item, Dialog - { - id = MenuOptions.ADD_TO_CORE, - icon = preload(\ - 'res://addons/popochiu/editor/main_dock/object_row/add_to_core.png'), - label = 'Add to Popochiu', - types = Constants.MAIN_TYPES - }, - { - id = MenuOptions.CREATE_STATE_SCRIPT, - icon = get_theme_icon('ScriptCreate', 'EditorIcons'), - label = 'Create state script', - types = Constants.MAIN_TYPES - }, - # Room - { - id = MenuOptions.SET_AS_MAIN, - icon = get_theme_icon('Heart', 'EditorIcons'), - label = 'Set as Main scene', - types = [Constants.Types.ROOM] - }, - # Character - { - id = MenuOptions.SET_AS_PC, - icon = PLAYER_CHARACTER_ICON, - label = 'Set as Player Character', - types = [Constants.Types.CHARACTER] - }, - # Inventory item - { - id = MenuOptions.START_WITH_IT, - icon = INVENTORY_START_ICON, - label = 'Start with it', - types = [Constants.Types.INVENTORY_ITEM] - }, - # Prop - { - id = MenuOptions.CREATE_PROP_SCRIPT, - icon = get_theme_icon('ScriptCreate', 'EditorIcons'), - label = 'Create script', - types = [Constants.Types.PROP] - }, - null, - { - id = MenuOptions.DELETE, - icon = get_theme_icon('Remove', 'EditorIcons'), - label = 'Remove' - } -] -@onready var buttons_container: HBoxContainer = $Panel/ButtonsContainer - - -#region Godot ###################################################################################### -func _ready() -> void: - _label.text = str(name) - tooltip_text = path - - # Assign icons - _fav_icon.texture = get_theme_icon('Heart', 'EditorIcons') - - btn_play.hide() - - match type: - Constants.Types.ROOM: - btn_play.show() - Constants.Types.CHARACTER: - _fav_icon.texture = PLAYER_CHARACTER_ICON - Constants.Types.INVENTORY_ITEM: - _fav_icon.texture = INVENTORY_START_ICON - - btn_play.icon = get_theme_icon('MainPlay', 'EditorIcons') - 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') - btn_menu.icon = get_theme_icon('GuiTabMenuHl', 'EditorIcons') - - btn_script.show() - btn_state.show() - btn_state_script.show() - - # Create the context menu based checked the type of Object this row represents - _create_menu() - - if type in Constants.MAIN_TYPES: - # By default disable the Add to Popochiu button. This will be enabled by PopochiuDock.gd if - # this object is not in PopochiuData.cfg - menu_popup.set_item_disabled( - menu_popup.get_item_index(MenuOptions.ADD_TO_CORE), true - ) - menu_popup.set_item_disabled( - menu_popup.get_item_index(MenuOptions.CREATE_STATE_SCRIPT), true - ) - elif type == Constants.Types.PROP and path.find('.gd') > -1: - # If the Room object has a script, disable the Create prop script button - menu_popup.remove_item( - menu_popup.get_item_index(MenuOptions.CREATE_PROP_SCRIPT) - ) - - if is_menu_hidden: - btn_menu.hide() - - # Hide buttons based checked the type of the Object this row represents - _fav_icon.hide() - - if type in Constants.ROOM_TYPES: - if (type == Constants.Types.PROP and\ - not FileAccess.file_exists(path.replace('.tscn', '.gd'))) or ( - type != Constants.Types.PROP and path.find('.gd') == -1 - ): - btn_script.hide() - - btn_state.hide() - btn_state_script.hide() - - if type in Constants.ROOM_TYPES: - # Do not show the button to open this Object' scene if it is a Room Object (Prop, Hotspot, - # Region, Point) - btn_open.hide() - - gui_input.connect(_check_click) - btn_play.pressed.connect(_play) - 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) - menu_popup.id_pressed.connect(_menu_item_pressed) - - -#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 show_add_to_core() -> void: - _label.modulate.a = 0.5 - menu_popup.set_item_disabled( - menu_popup.get_item_index(MenuOptions.ADD_TO_CORE), false - ) - - -func show_create_state_script() -> void: - btn_state_script.disabled = true - menu_popup.set_item_disabled(menu_popup.get_item_index(MenuOptions.CREATE_STATE_SCRIPT), false) - - -func remove_create_state_script() -> void: - menu_popup.remove_item(menu_popup.get_item_index(MenuOptions.CREATE_STATE_SCRIPT)) - - -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) - - -#endregion - -#region SetGet ##################################################################################### -func set_main_dock(value: Panel) -> void: - main_dock = value - _delete_dialog = main_dock.delete_dialog - _delete_all_checkbox = _delete_dialog.find_child('CheckBox') - - -func set_is_main(value: bool) -> void: - is_main = value - _fav_icon.visible = value - - menu_popup.set_item_disabled( - menu_popup.get_item_index(MenuOptions.SET_AS_MAIN), value - ) - - -func set_is_pc(value: bool) -> void: - is_pc = value - _fav_icon.visible = value - - menu_popup.set_item_disabled( - menu_popup.get_item_index(MenuOptions.SET_AS_PC), value - ) - - -func set_is_on_start(value: bool) -> void: - is_on_start = value - _fav_icon.visible = value - - -#endregion - -#region Private #################################################################################### -func _create_menu() -> void: - menu_popup.clear() - - for option in menu_cfg: - if option: - if option.has('types') and not type in option.types: continue - - menu_popup.add_icon_item( - option.icon, - option.label, - option.id - ) - else: - menu_popup.add_separator() - - -func _check_click(event: InputEvent) -> void: - var mouse_event: = event as InputEventMouseButton - if mouse_event\ - and mouse_event.button_index == MOUSE_BUTTON_LEFT and mouse_event.pressed: - EditorInterface.select_file(path) - select() - - -func _menu_item_pressed(id: int) -> void: - match id: - MenuOptions.ADD_TO_CORE: - _add_object_to_core() - MenuOptions.SET_AS_MAIN: - main_dock.set_main_scene(path) - self.is_main = true - MenuOptions.CREATE_STATE_SCRIPT: - _create_state_script() - MenuOptions.SET_AS_PC: - main_dock.set_pc(name) - self.is_pc = true - MenuOptions.START_WITH_IT: - var items: Array = PopochiuConfig.get_inventory_items_on_start() - - if name in items: - items.erase(name) - else: - items.append(name) - - PopochiuConfig.set_inventory_items_on_start(items) - - self.is_on_start = name in items - MenuOptions.CREATE_PROP_SCRIPT: - var prop_template := load(PROP_SCRIPT_TEMPLATE) - var script_path := path + '/%s/Prop%s.gd' % [name, name] - - var prop: PopochiuProp =\ - EditorInterface.get_edited_scene_root().get_node('Props/' + node_path) - - # Create the folder for the script - if DirAccess.make_dir_recursive_absolute(script_path.get_base_dir()) != OK: - push_error('[Popochiu] Could not create Prop folder for ' + str(name)) - return - - # Create the script - if ResourceSaver.save(prop_template, script_path) != OK: - push_error('[Popochiu] Could not create script: %s.gd' % name) - return - - # Assign the created Script to the Prop, save the scene, and select the node in the tree - # and the created file in the FileSystem dock - var script := load(script_path) - - script.script_name = prop.script_name - script.description = prop.description - script.clickable = prop.clickable - script.baseline = prop.baseline - script.walk_to_point = prop.walk_to_point - script.cursor = prop.cursor - script.always_on_top = prop.always_on_top - script.texture = prop.texture - - prop.set_script(script) - - EditorInterface.save_scene() - PopochiuEditorHelper.select_node(prop) - EditorInterface.select_file(script_path) - - # Update this row properties and state - path = script_path - - btn_script.show() - menu_popup.set_item_disabled( - menu_popup.get_item_index(MenuOptions.CREATE_PROP_SCRIPT), true - ) - MenuOptions.DELETE: - _remove_object() - - -## Add this Object (Room, Character, InventoryItem, Dialog) to PopochiuData.cfg so it can be used by -## Popochiu. -func _add_object_to_core() -> void: - var target_array := '' - var resource: Resource - - if path.find('.tscn') > -1: - resource = load(path.replace('.tscn', '.tres')) - else: - resource = load(path) - - match type: - Constants.Types.ROOM: - target_array = 'rooms' - Constants.Types.CHARACTER: - target_array = 'characters' - Constants.Types.INVENTORY_ITEM: - target_array = 'inventory_items' - Constants.Types.DIALOG: - target_array = 'dialogs' - _: - # TODO: Show an error message - return - - if main_dock.add_resource_to_popochiu(target_array, resource) != OK: - push_error("[Popochiu] Couldn't add Object to Popochiu: %s" % 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(MenuOptions.ADD_TO_CORE), true - ) - - -## Plays the scene of the clicked row -func _play() -> void: - EditorInterface.select_file(path) - EditorInterface.play_custom_scene(path) - - -## 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 path.find('.tres') < 0: - EditorInterface.set_main_screen_editor('2D') - EditorInterface.open_scene_from_path(path) - else: - EditorInterface.edit_resource(load(path)) - - select() - - -func _open_script() -> void: - var script_path := path - - if path.find('.tscn') > -1: - # A room, character, inventory item, or prop - script_path = path.replace('.tscn', '.gd') - elif path.find('.tres') > -1: - # A dialog - script_path = path.replace('.tres', '.gd') - elif path.find('.gd') == -1: - 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() - - -## 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 := 'Popochiu' - - # Verify if the object to delete is a Prop, a Hotspot or a Region. - if type in Constants.ROOM_TYPES: - # res://game/rooms/???/props/??/ > [res:, popochiu, rooms, ???, props, ??] - location = "Room%s" % (path.split('/', false)[3]).to_pascal_case() - - # 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.confirmed.connect(_remove_from_core) - _delete_dialog.get_cancel_button().pressed.connect(_disconnect_popup) - _delete_dialog.canceled.connect(_disconnect_popup) - - main_dock.show_confirmation( - # Title - 'Remove %s from %s' % [name, location], - # Body - 'This will remove the [b]%s[/b] object in [b]%s[/b] scene.' % [name, location] +\ - ' Uses of this object in scripts will not work anymore.' +\ - ' This action cannot be reversed. Continue?', - # Additional confirmation - 'Want to delete the [b]%s[/b] folder too?' % path.get_base_dir() +\ - ( - ' ([b]%d[/b] audio files will be deleted' % audio_files.size()\ - if audio_files.size() > 0\ - else '' - ) +\ - ' (cannot be reversed))'\ - if path.get_extension() - else '' - ) - - -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): - 'AudioStreamOggVorbis', 'AudioStreamMP3', 'AudioStreamWAV': - files.append(dir.get_file_path(idx)) - - return files - - -func _remove_from_core() -> void: - var room_child_to_free: Node = null - - # Delete the object from Popochiu - match type: - Constants.Types.ROOM: - PopochiuResources.remove_autoload_obj(PopochiuResources.R_SNGL, name) - PopochiuResources.erase_data_value('rooms', str(name)) - Constants.Types.CHARACTER: - PopochiuResources.remove_autoload_obj(PopochiuResources.C_SNGL, name) - PopochiuResources.erase_data_value('characters', str(name)) - Constants.Types.INVENTORY_ITEM: - PopochiuResources.remove_autoload_obj(PopochiuResources.I_SNGL, name) - PopochiuResources.erase_data_value('inventory_items', str(name)) - Constants.Types.DIALOG: - PopochiuResources.remove_autoload_obj(PopochiuResources.D_SNGL, name) - PopochiuResources.erase_data_value('dialogs', str(name)) - Constants.Types.PROP,\ - Constants.Types.HOTSPOT,\ - Constants.Types.MARKER, \ - Constants.Types.REGION,\ - Constants.Types.WALKABLE_AREA: - var opened_room: PopochiuRoom = main_dock.get_opened_room() - - if is_instance_valid(opened_room): - match type: - Constants.Types.PROP: - room_child_to_free = opened_room.get_prop(str(name)) - Constants.Types.HOTSPOT: - room_child_to_free = opened_room.get_hotspot(str(name)) - Constants.Types.MARKER: - room_child_to_free = opened_room.get_marker(str(name)) - Constants.Types.REGION: - room_child_to_free = opened_room.get_region(str(name)) - Constants.Types.WALKABLE_AREA: - room_child_to_free = opened_room.get_walkable_area(str(name)) - - # TODO: If it is a non-interactable Object, just delete the node from the - # scene, and maybe its sprite? - # TODO: Remove explicit exclusion, it's ugly - if path.is_empty(): - _disconnect_popup() - return - - if _delete_all_checkbox.button_pressed: - _delete_from_file_system() - elif type in Constants.MAIN_TYPES: - show_add_to_core() - elif path.get_extension().is_empty(): - queue_free() - - _disconnect_popup() - - # Fix #196 by removing the node from the Room scene after (if it is the case) deleting the - # folder of the node (this applies to Props, Hotspots, Walkable areas and Regions). - if room_child_to_free: - room_child_to_free.queue_free() - await RenderingServer.frame_post_draw - - if ( - EditorInterface.get_edited_scene_root() - and EditorInterface.get_edited_scene_root().get('script_name') - and EditorInterface.get_edited_scene_root().script_name == name - ): - return - - EditorInterface.save_scene() - - -## 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) - - # Delete the element's row - queue_free() - - -## 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 `dir`. First, get the paths to each file, then delete them one by one, -## calling `EditorFileSystem.update_file(path: String)` so that, in case it's an imported file, its -## **.import** is also deleted. -func _delete_files(dir: EditorFileSystemDirectory) -> int: - # This array will store the paths of the files to be deleted. - var files_paths := [] - var deleted_audios := [] - - for file_idx: int in dir.get_file_count(): - match dir.get_file_type(file_idx): - 'AudioStreamOggVorbis', 'AudioStreamMP3', 'AudioStreamWAV': - deleted_audios.append(dir.get_file_path(file_idx)) - 'Resource': - var resource: Resource = load(dir.get_file_path(file_idx)) - if resource is AudioCue: - deleted_audios.append(resource.audio.resource_path) - - # Delete the AudioCue in the PopochiuData.cfg - for arr in ['mx_cues', 'sfx_cues', 'vo_cues', 'ui_cues']: - var cues: Array = PopochiuResources.get_data_value( - 'audio', arr, [] - ) - if cues.has(resource.resource_path): - cues.erase(resource.resource_path) - assert(\ - PopochiuResources.set_data_value( - 'audio', arr, cues - ) == OK,\ - '[Popochiu] Could not save AudioManager after' +\ - ' attempting to delete AudioCue during deletion of' +\ - ' directory %s.' % dir.get_path()\ - ) - break - - 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(): - main_dock.get_audio_tab().delete_rows(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 - - -## Disconnect the signals from the popup used to confrim a deletion. -func _disconnect_popup() -> void: - if _delete_dialog.confirmed.is_connected(_remove_from_core): - _delete_dialog.confirmed.disconnect(_remove_from_core) - - if _delete_dialog.get_cancel_button().pressed.is_connected(_disconnect_popup): - _delete_dialog.get_cancel_button().pressed.disconnect(_disconnect_popup) - - if _delete_dialog.canceled.is_connected(_disconnect_popup): - _delete_dialog.canceled.disconnect(_disconnect_popup) - - -func _create_state_script() -> void: - var template: Script = null - - match type: - Constants.Types.ROOM: - template = load(ROOM_STATE_TEMPLATE) - Constants.Types.CHARACTER: - template = load(CHARACTER_STATE_TEMPLATE) - Constants.Types.INVENTORY_ITEM: - template = load(INVENTORY_ITEM_STATE_TEMPLATE) - - var script_path := path.replace('.tscn', 'State.gd') - - # Create the folder for the script - if DirAccess.make_dir_recursive_absolute(script_path.get_base_dir()) != OK: - push_error('[Popochiu] Could not create state script for ' + str(name)) - return - - # Create the script - if ResourceSaver.save(template, script_path) != OK: - push_error('[Popochiu] Could not create script: %s.gd' % name) - return - - # Assign the created Script to the object's state resource - var state_resource := load(path.replace('tscn', 'tres')) - state_resource.set_script(load(script_path)) - state_resource.script_name = name - state_resource.scene = path - - if ResourceSaver.save(state_resource, state_resource.resource_path) != OK: - push_error('[Popochiu] Could not create script: %s.gd' % name) - return - - # Disable the context menu option and enable the button to open the state script - menu_popup.set_item_disabled( - menu_popup.get_item_index(MenuOptions.CREATE_STATE_SCRIPT), true - ) - btn_state_script.disabled = false - - # Select and open the created script - _open_state_script() - - -#endregion diff --git a/addons/popochiu/editor/main_dock/popochiu_dock.gd b/addons/popochiu/editor/main_dock/popochiu_dock.gd index 160b3c114..51168093a 100644 --- a/addons/popochiu/editor/main_dock/popochiu_dock.gd +++ b/addons/popochiu/editor/main_dock/popochiu_dock.gd @@ -1,96 +1,37 @@ -# Acts like a HUD for working with Popochiu objects: -# Rooms, Characters, Inventory items, Dialog trees. @tool extends Panel signal move_folders_pressed -const POPOCHIU_SCENE := "res://addons/popochiu/engine/popochiu.tscn" -const ROOMS_PATH := "res://game/rooms/" -const CHARACTERS_PATH := "res://game/characters/" -const INVENTORY_ITEMS_PATH := "res://game/inventory_items/" -const DIALOGS_PATH := "res://game/dialogs/" -const Constants := preload("res://addons/popochiu/popochiu_resources.gd") -const PopochiuObjectRow := preload("object_row/popochiu_object_row.gd") - -var popochiu: Node = null -var last_selected: PopochiuObjectRow = null - -var _has_data := false -var _object_row: PackedScene = preload(\ -"res://addons/popochiu/editor/main_dock/object_row/popochiu_object_row.tscn") -var _rows_paths := [] - -@onready var delete_dialog: ConfirmationDialog = %DeleteConfirmation -@onready var delete_checkbox: CheckBox = delete_dialog.find_child("CheckBox") -@onready var delete_message: RichTextLabel = delete_dialog.find_child("Message") -@onready var delete_extra: Container = delete_dialog.find_child("Extra") -@onready var delete_ask: RichTextLabel = delete_extra.find_child("Ask") -@onready var loading_dialog: Popup = %Loading -@onready var setup_dialog: AcceptDialog = %Setup @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_ui: VBoxContainer = %UI -# ▨▨▨▨ FOOTER ▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨ +@onready var tab_gui: VBoxContainer = %GUI +# ---- FOOTER -------------------------------------------------------------------------------------- @onready var version: Label = %Version @onready var btn_setup: Button = %BtnSetup @onready var btn_docs: Button = %BtnDocs -@onready var _types := { - Constants.Types.ROOM: { - path = ROOMS_PATH, - group = find_child("RoomsGroup"), - popup = find_child("CreateRoom"), - scene = ROOMS_PATH + ("%s/room_%s.tscn") - }, - Constants.Types.CHARACTER: { - path = CHARACTERS_PATH, - group = find_child("CharactersGroup"), - popup = find_child("CreateCharacter"), - scene = CHARACTERS_PATH + ("%s/character_%s.tscn") - }, - Constants.Types.INVENTORY_ITEM: { - path = INVENTORY_ITEMS_PATH, - group = find_child("ItemsGroup"), - popup = find_child("CreateInventoryItem"), - scene = INVENTORY_ITEMS_PATH + ("%s/inventory_item_%s.tscn") - }, - Constants.Types.DIALOG: { - path = DIALOGS_PATH, - group = find_child("DialogsGroup"), - popup = find_child("CreateDialog"), - scene = DIALOGS_PATH + ("%s/dialog_%s.tres") - } -} #region Godot ###################################################################################### func _ready() -> void: - popochiu = load(POPOCHIU_SCENE).instantiate() - tab_container.get_node("Main/PopochiuFilter").groups = _types - version.text = "v" + PopochiuResources.get_version() btn_setup.icon = get_theme_icon("Edit", "EditorIcons") btn_docs.icon = get_theme_icon("HelpSearch", "EditorIcons") - delete_message.add_theme_font_override("bold_font", get_theme_font("bold", "EditorFonts")) - delete_ask.add_theme_font_override("bold_font", get_theme_font("bold", "EditorFonts")) - # Set the Main tab selected by default tab_container.current_tab = 0 - # Connect to children signals - for t in _types: - _types[t].popup.set_main_dock(self) - _types[t].group.create_clicked.connect(_open_popup.bind(_types[t].popup)) - - tab_room.main_dock = self - tab_room.object_row = _object_row - tab_audio.main_dock = self + # 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 childrens' signals tab_container.tab_changed.connect(_on_tab_changed) btn_setup.pressed.connect(open_setup) - btn_docs.pressed.connect(OS.shell_open.bind(Constants.DOCUMENTATION)) + btn_docs.pressed.connect(OS.shell_open.bind(PopochiuResources.DOCUMENTATION)) + + # Connect to parent signals get_tree().node_added.connect(_check_node) @@ -98,114 +39,25 @@ func _ready() -> void: #region Public ##################################################################################### func fill_data() -> void: - # Search the FileSystem for Rooms, Characters, InventoryItems and Dialogs - for t in _types: - if not _types[t].has("path"): continue - - var type_dir := EditorInterface.get_resource_filesystem().get_filesystem_path( - _types[t].path - ) - - if not is_instance_valid(type_dir): - continue - - for d: int in type_dir.get_subdir_count(): - var efsd: EditorFileSystemDirectory = type_dir.get_subdir(d) - - for f in efsd.get_file_count(): - var path = efsd.get_file_path(f) - - if not EditorInterface.get_resource_filesystem().get_file_type(path) == "Resource": - continue - - var resource: Resource = load(path) - - if not (resource is PopochiuRoomData - or resource is PopochiuCharacterData - or resource is PopochiuInventoryItemData - or resource is PopochiuDialog): - continue - - var row_path: String = _types[t].scene %\ - [resource.resource_name, resource.resource_name] - - if row_path in _rows_paths: continue - - var row: PopochiuObjectRow = _create_object_row( - t, resource.script_name - ) - _types[t].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 t: - Constants.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 - Constants.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 - Constants.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 - Constants.Types.DIALOG: - is_in_core = PopochiuResources.has_data_value( - "dialogs", resource.script_name - ) - - if not is_in_core: - row.show_add_to_core() - - if not has_state_script: - row.show_create_state_script() - else: - row.remove_create_state_script() - - # Load other tabs data + tab_main.fill_data() tab_audio.fill_data() -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 scene_changed(scene_root: Node) -> void: if not is_instance_valid(tab_room): return tab_room.scene_changed(scene_root) - if not is_instance_valid(tab_ui): return - tab_ui.on_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 is PopochiuRoom - and not scene_root.scene_file_path == PopochiuResources.GUI_GAME_SCENE + 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 @@ -215,53 +67,7 @@ func scene_changed(scene_root: Node) -> void: func scene_closed(filepath: String) -> void: if not is_instance_valid(tab_room): return tab_room.scene_closed(filepath) - - -func add_resource_to_popochiu(target: String, resource: Resource) -> int: - return PopochiuResources.set_data_value( - target, resource.script_name, resource.resource_path - ) - - -func show_confirmation( - title: String, message: String, ask := "", min_size := Vector2(640, 120) -) -> void: - delete_checkbox.button_pressed = false - - delete_dialog.title = title - delete_message.text = message - - delete_extra.hide() - - if ask: - delete_ask.text = ask - delete_extra.show() - - delete_dialog.popup_centered(min_size) - - await RenderingServer.frame_post_draw - delete_dialog.reset_size() - - await RenderingServer.frame_post_draw - delete_dialog.move_to_center() - - -func get_popup(name: String) -> ConfirmationDialog: - return find_child(name) as ConfirmationDialog - - -func set_main_scene(path: String) -> void: - ProjectSettings.set_setting("application/run/main_scene", path) - - var result = ProjectSettings.save() - assert(result == OK) - - _types[Constants.Types.ROOM].group.clear_favs() - - -func set_pc(script_name: String) -> void: - PopochiuResources.set_data_value("setup", "pc", script_name) - _types[Constants.Types.CHARACTER].group.clear_favs() + check_open_scenes() func search_audio_files() -> void: @@ -270,69 +76,30 @@ func search_audio_files() -> void: tab_audio.search_audio_files() -func get_audio_tab() -> Node: - return tab_audio - - -func get_opened_room() -> PopochiuRoom: - return tab_room.opened_room - - -func get_opened_room_tab() -> VBoxContainer: - return tab_room - - func open_setup() -> void: - setup_dialog.appear() + PopochiuEditorHelper.show_setup() -#endregion - -#region Private #################################################################################### -func _open_popup(popup: ConfirmationDialog) -> void: - popup.clear_fields() - popup.popup_centered() - +## 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 - popup.reset_size() - - await get_tree().process_frame - popup.move_to_center() - + if EditorInterface.get_open_scenes().is_empty(): + EditorInterface.get_selection().selection_changed.connect(_on_editor_selection_changed) -func _create_object_row(type: int, name_to_add: String) -> PopochiuObjectRow: - var new_obj: PopochiuObjectRow = _object_row.instantiate() - - new_obj.name = name_to_add - new_obj.type = type - new_obj.path = _types[type].scene % [ - name_to_add.to_snake_case(), name_to_add.to_snake_case() - ] - new_obj.main_dock = self - new_obj.clicked.connect(_select_object) - - _rows_paths.append(new_obj.path) - - _has_data = true - - return new_obj +#endregion +#region Private #################################################################################### func _on_tab_changed(tab: int) -> void: - if not _has_data and tab == 0: - # Try to load the Main tab data in case they couldn't be loaded while - # opening the engine - fill_data() - - if tab == tab_ui.get_index(): - tab_ui.open_gui_scene() - - -func _select_object(por: PopochiuObjectRow) -> void: - if last_selected and last_selected != por: - last_selected.deselect() + if tab == tab_main.get_index(): + tab_main.check_data() - last_selected = por + if tab == tab_gui.get_index(): + tab_gui.open_gui_scene() func _check_node(node: Node) -> void: @@ -341,4 +108,10 @@ func _check_node(node: Node) -> void: 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.tscn b/addons/popochiu/editor/main_dock/popochiu_dock.tscn index 9081afe62..705f050e1 100644 --- a/addons/popochiu/editor/main_dock/popochiu_dock.tscn +++ b/addons/popochiu/editor/main_dock/popochiu_dock.tscn @@ -1,29 +1,12 @@ -[gd_scene load_steps=29 format=3 uid="uid://bardo4kb80rvg"] - -[ext_resource type="PackedScene" uid="uid://byxufkqv2sncb" path="res://addons/popochiu/editor/popups/create_character/create_character.tscn" id="1"] -[ext_resource type="PackedScene" uid="uid://rvbosisbkiob" path="res://addons/popochiu/editor/popups/create_dialog/create_dialog.tscn" id="2"] -[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_filter.gd" id="2_i87mb"] -[ext_resource type="PackedScene" uid="uid://dk0qnjdqvhygp" path="res://addons/popochiu/editor/popups/create_room/create_room.tscn" id="3"] -[ext_resource type="Texture2D" uid="uid://cec7vj2roo7ef" path="res://addons/popochiu/icons/room.png" id="3_uwncn"] -[ext_resource type="PackedScene" uid="uid://b55ialbvpilxv" path="res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn" id="4"] -[ext_resource type="Texture2D" uid="uid://mir6j58lju3l" path="res://addons/popochiu/icons/character.png" id="4_h14xk"] -[ext_resource type="PackedScene" uid="uid://cd4waqogbca4x" path="res://addons/popochiu/editor/popups/create_prop/create_prop.tscn" id="5"] -[ext_resource type="Texture2D" uid="uid://dxtuplm5v6w33" path="res://addons/popochiu/icons/inventory_item.png" id="5_ritjh"] -[ext_resource type="PackedScene" uid="uid://b4xgqqfpot7cc" path="res://addons/popochiu/editor/popups/create_inventory_item/create_inventory_item.tscn" id="6"] -[ext_resource type="Texture2D" uid="uid://bb53j2q1cm45l" path="res://addons/popochiu/icons/dialog.png" id="6_evjo7"] +[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_ui/tab_ui.tscn" id="10_82goo"] -[ext_resource type="PackedScene" uid="uid://q1bjkxavt2ay" path="res://addons/popochiu/editor/main_dock/tab_room.tscn" id="12"] -[ext_resource type="PackedScene" uid="uid://bpj8jlet25coy" path="res://addons/popochiu/editor/main_dock/tab_audio.tscn" id="13"] -[ext_resource type="PackedScene" uid="uid://yybwvwbsf7en" path="res://addons/popochiu/editor/popups/create_hotspot/create_hotspot.tscn" id="14"] -[ext_resource type="PackedScene" uid="uid://chnpxfme1xmpb" path="res://addons/popochiu/editor/popups/create_region/create_region.tscn" id="15"] -[ext_resource type="PackedScene" path="res://addons/popochiu/editor/popups/loading/loading.tscn" id="16"] -[ext_resource type="PackedScene" uid="uid://bcb865akap0mt" path="res://addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.tscn" id="17"] -[ext_resource type="PackedScene" uid="uid://c3r8juwutb1gr" path="res://addons/popochiu/editor/popups/setup/setup.tscn" id="18"] -[ext_resource type="PackedScene" uid="uid://cifxp45i4mouu" path="res://addons/popochiu/editor/popups/create_marker/create_marker.tscn" id="18_05jmo"] -[ext_resource type="PackedScene" uid="uid://c054k1ux04waq" path="res://addons/popochiu/editor/popups/create_walkable_area/create_walkable_area.tscn" id="19"] - -[sub_resource type="Image" id="Image_i5q1j"] +[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_q4a6k"] 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", @@ -32,52 +15,12 @@ data = { "width": 16 } -[sub_resource type="ImageTexture" id="ImageTexture_ofbcj"] -image = SubResource("Image_i5q1j") - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rvawd"] -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_06xvb"] -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_w1rm1"] -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_g6cir"] -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) +[sub_resource type="ImageTexture" id="ImageTexture_e4obm"] +image = SubResource("Image_q4a6k") [node name="Popochiu" type="Panel"] clip_contents = true -custom_minimum_size = Vector2(408, 0) +custom_minimum_size = Vector2(320, 0) anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -102,79 +45,31 @@ unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +current_tab = 0 -[node name="Main" type="VBoxContainer" parent="MarginContainer/VBoxContainer/TabContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -focus_mode = 2 - -[node name="PopochiuFilter" type="LineEdit" parent="MarginContainer/VBoxContainer/TabContainer/Main"] -layout_mode = 2 -placeholder_text = "Filter Popochiu objects" -clear_button_enabled = true -right_icon = SubResource("ImageTexture_ofbcj") -script = ExtResource("2_i87mb") - -[node name="MainScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer/TabContainer/Main"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -follow_focus = true - -[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/TabContainer/Main/MainScrollContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="RoomsGroup" parent="MarginContainer/VBoxContainer/TabContainer/Main/MainScrollContainer/VBoxContainer" instance=ExtResource("4")] -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxFlat_rvawd") -icon = ExtResource("3_uwncn") -color = Color(0.439216, 0.427451, 0.921569, 0.74902) -title = "Rooms" -create_text = "Create room" - -[node name="CharactersGroup" parent="MarginContainer/VBoxContainer/TabContainer/Main/MainScrollContainer/VBoxContainer" instance=ExtResource("4")] -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxFlat_06xvb") -icon = ExtResource("4_h14xk") -color = Color(0.556863, 0.313726, 0.160784, 0.74902) -title = "Characters" -create_text = "Create character" - -[node name="ItemsGroup" parent="MarginContainer/VBoxContainer/TabContainer/Main/MainScrollContainer/VBoxContainer" instance=ExtResource("4")] -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxFlat_w1rm1") -icon = ExtResource("5_ritjh") -color = Color(0.337255, 0.67451, 0.301961, 0.74902) -title = "Inventory items" -create_text = "Create inventory item" - -[node name="DialogsGroup" parent="MarginContainer/VBoxContainer/TabContainer/Main/MainScrollContainer/VBoxContainer" instance=ExtResource("4")] +[node name="Main" parent="MarginContainer/VBoxContainer/TabContainer" instance=ExtResource("2_oxyje")] +unique_name_in_owner = true layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxFlat_g6cir") -icon = ExtResource("6_evjo7") -color = Color(0.556863, 0.235294, 0.592157, 0.74902) -title = "Dialog trees" -create_text = "Create dialog tree" [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="UI" parent="MarginContainer/VBoxContainer/TabContainer" instance=ExtResource("10_82goo")] +[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 @@ -188,61 +83,18 @@ alignment = 2 unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 -text = "v2.0-beta_3" +text = "v2.0" [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_ofbcj") +icon = SubResource("ImageTexture_e4obm") [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_ofbcj") - -[node name="Popups" type="Control" parent="."] -layout_mode = 3 -anchors_preset = 0 - -[node name="CreateRoom" parent="Popups" instance=ExtResource("3")] - -[node name="CreateCharacter" parent="Popups" instance=ExtResource("1")] -title = "Create Character" - -[node name="CreateInventoryItem" parent="Popups" instance=ExtResource("6")] -title = "Create Inventory item" - -[node name="CreateDialog" parent="Popups" instance=ExtResource("2")] -title = "Create Dialog tree" - -[node name="CreateProp" parent="Popups" instance=ExtResource("5")] -title = "Create prop" -visible = false - -[node name="CreateHotspot" parent="Popups" instance=ExtResource("14")] -title = "Create hotspot" - -[node name="CreateRegion" parent="Popups" instance=ExtResource("15")] -title = "Create Region" - -[node name="CreateMarker" parent="Popups" instance=ExtResource("18_05jmo")] - -[node name="CreateWalkableArea" parent="Popups" instance=ExtResource("19")] -title = "Create Walkable area" - -[node name="DeleteConfirmation" parent="Popups" instance=ExtResource("17")] -unique_name_in_owner = true -title = "Delete?" - -[node name="Loading" parent="Popups" instance=ExtResource("16")] -unique_name_in_owner = true -title = "Loading...." -size = Vector2i(320, 180) -min_size = Vector2i(320, 180) - -[node name="Setup" parent="Popups" instance=ExtResource("18")] -unique_name_in_owner = true +icon = SubResource("ImageTexture_e4obm") diff --git a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.svg b/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg similarity index 100% rename from addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.svg rename to addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg diff --git a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.svg.import b/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg.import similarity index 77% rename from addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.svg.import rename to addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg.import index e06c5c031..111d31766 100644 --- a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.svg.import +++ b/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://uwjkfsrpfx3e" -path="res://.godot/imported/popochiu_group.svg-dc6ea6e922b67de9d41a68c035e78dd4.ctex" +path="res://.godot/imported/popochiu_group.svg-55d153202c16f767328f8314e84a5c37.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.svg" -dest_files=["res://.godot/imported/popochiu_group.svg-dc6ea6e922b67de9d41a68c035e78dd4.ctex"] +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] diff --git a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd index 3514e70e4..921a4be99 100644 --- a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd +++ b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd @@ -1,176 +1,184 @@ @tool -@icon('res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.svg') +@icon("res://addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg") class_name PopochiuGroup extends PanelContainer signal create_clicked -const Constants := preload('res://addons/popochiu/popochiu_resources.gd') -const PopochiuObjectRow :=\ -preload('res://addons/popochiu/editor/main_dock/object_row/popochiu_object_row.gd') +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 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 create_text := "" +@export var target_list: NodePath = "" @export var custom_title_count := false var _external_list: VBoxContainer = null -@onready var _header: PanelContainer = find_child('Header') -@onready var _arrow: TextureRect = find_child('Arrow') -@onready var _icon: TextureRect = find_child('Icon') -@onready var _lbl_title: Label = find_child('Title') -@onready var _body: Container = find_child('Body') -@onready var _list: VBoxContainer = find_child('List') -@onready var _btn_create: Button = find_child('BtnCreate') +@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 -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ GODOT ░░░░ +#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 + add_theme_stylebox_override("panel", get_theme_stylebox("panel").duplicate()) + (get_theme_stylebox("panel") as StyleBoxFlat).border_color = color if is_instance_valid(icon): - _icon.texture = 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 + 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() + btn_create.hide() - _header.gui_input.connect(_on_input) - _list.resized.connect(_update_child_count) - _btn_create.pressed.connect(emit_signal.bind('create_clicked')) + 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 -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PUBLIC ░░░░ +#endregion + +#region Public ##################################################################################### func clear_list() -> void: - for c in _list.get_children(): - c.queue_free() + 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) + list.add_child(node) - _btn_create.disabled = false + btn_create.disabled = false if not is_open: self.is_open = true func clear_favs() -> void: - for por in _list.get_children(): - if (por as PopochiuObjectRow).type == Constants.Types.ROOM: - (por as PopochiuObjectRow).is_main = false - - if (por as PopochiuObjectRow).type == Constants.Types.CHARACTER: - (por as PopochiuObjectRow).is_pc = false + for popochiu_row: PopochiuRow in list.get_children(): + popochiu_row.clear_tag() func disable_create() -> void: - _btn_create.disabled = true + btn_create.disabled = true func enable_create() -> void: - _btn_create.disabled = false + btn_create.disabled = false func get_elements() -> Array: - return _list.get_children() + 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) + if list.has_node(node_name): + var node: HBoxContainer = list.get_node(node_name) - _list.remove_child(node) - node.queue_free() + list.remove_child(node) + node.free() func add_header_button(btn: Button) -> void: - _btn_create.add_sibling(btn) + 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] + lbl_title.text = "%s (%d/%d)" % [title, count, max_count] else: - _lbl_title.text = '%s (%d)' % [title, count] + lbl_title.text = "%s (%d)" % [title, count] -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 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 get_by_name(node_name: String) -> HBoxContainer: + if list.has_node(node_name): + return list.get_node(node_name) + return null -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') +#endregion + +#region SetGet ##################################################################################### +func set_icon(value: Texture2D) -> void: + icon = value - if is_instance_valid(_body): - if button_pressed: _body.show() - else: _body.hide() + if is_instance_valid(trt_icon): + trt_icon.texture = value + + +func set_is_open(value: bool) -> void: + is_open = value - if is_instance_valid(_external_list): - _external_list.visible = button_pressed + _toggled(value) -func _set_color(value: Color) -> void: +func set_color(value: Color) -> void: color = value - if is_instance_valid(_header): - (get_theme_stylebox('panel') as StyleBoxFlat).border_color = value + if is_instance_valid(header): + (get_theme_stylebox("panel") as StyleBoxFlat).border_color = value -func _set_title(value: String) -> void: +func set_title(value: String) -> void: title = value - if is_instance_valid(_lbl_title): - _lbl_title.text = value + if is_instance_valid(lbl_title): + lbl_title.text = value -func _set_is_open(value: bool) -> void: - is_open = value - - _toggled(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 _set_icon(value: Texture2D) -> void: - icon = value + +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(_icon): - _icon.texture = value + 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 childs := _list.get_child_count() - _lbl_title.text = title + (' (%d)' % childs) if childs > 1 else title + if is_instance_valid(lbl_title): + var childs := list.get_child_count() + lbl_title.text = title + (" (%d)" % childs) if childs > 1 else title func _order_list(node: Node) -> void: @@ -178,11 +186,14 @@ func _order_list(node: Node) -> void: # Place the new row in its place alphabetically var place_before: Node = null - for row in _list.get_children(): + 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()) + list.move_child(node, place_before.get_index()) + + +#endregion diff --git a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn index aa6886b15..13c7e5dfa 100644 --- a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn +++ b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn @@ -2,7 +2,7 @@ [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_lon0m"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qhsn2"] content_margin_left = 8.0 content_margin_right = 8.0 draw_center = false @@ -23,7 +23,7 @@ corner_detail = 5 expand_margin_left = 4.0 expand_margin_right = 4.0 -[sub_resource type="Image" id="Image_i5q1j"] +[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", @@ -32,13 +32,13 @@ data = { "width": 16 } -[sub_resource type="ImageTexture" id="ImageTexture_ofbcj"] -image = SubResource("Image_i5q1j") +[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_lon0m") +theme_override_styles/panel = SubResource("StyleBoxFlat_qhsn2") script = ExtResource("1_lumyt") is_open = false @@ -46,6 +46,7 @@ is_open = false 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") @@ -54,31 +55,37 @@ theme_override_styles/panel = SubResource("StyleBoxFlat_t8mu1") 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_ofbcj") +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_ofbcj") +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 000000000..a816a3c7c --- /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 childrens' 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.tscn b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.tscn new file mode 100644 index 000000000..6c1031032 --- /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/object_row/add_to_core.png b/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png similarity index 100% rename from addons/popochiu/editor/main_dock/object_row/add_to_core.png rename to addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png diff --git a/addons/popochiu/editor/main_dock/object_row/add_to_core.png.import b/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png.import similarity index 67% rename from addons/popochiu/editor/main_dock/object_row/add_to_core.png.import rename to addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png.import index d83f8aa14..bdca4b34f 100644 --- a/addons/popochiu/editor/main_dock/object_row/add_to_core.png.import +++ b/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bw3ie8wfwa2i2" -path="res://.godot/imported/add_to_core.png-75bdd6400ac63361cdae9c29662c20d2.ctex" +path="res://.godot/imported/add_to_core.png-52def14ca6e499df1e292c93f01c4349.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://addons/popochiu/editor/main_dock/object_row/add_to_core.png" -dest_files=["res://.godot/imported/add_to_core.png-75bdd6400ac63361cdae9c29662c20d2.ctex"] +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] diff --git a/addons/popochiu/editor/main_dock/object_row/delete.png b/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png similarity index 100% rename from addons/popochiu/editor/main_dock/object_row/delete.png rename to addons/popochiu/editor/main_dock/popochiu_row/images/delete.png diff --git a/addons/popochiu/editor/main_dock/object_row/delete.png.import b/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png.import similarity index 69% rename from addons/popochiu/editor/main_dock/object_row/delete.png.import rename to addons/popochiu/editor/main_dock/popochiu_row/images/delete.png.import index 6075161a2..436423620 100644 --- a/addons/popochiu/editor/main_dock/object_row/delete.png.import +++ b/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bahipxbrrss0o" -path="res://.godot/imported/delete.png-2208814566f020bf60917df7ad66648d.ctex" +path="res://.godot/imported/delete.png-27dd9adc116bbf3fc8b20a99d1331933.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://addons/popochiu/editor/main_dock/object_row/delete.png" -dest_files=["res://.godot/imported/delete.png-2208814566f020bf60917df7ad66648d.ctex"] +source_file="res://addons/popochiu/editor/main_dock/popochiu_row/images/delete.png" +dest_files=["res://.godot/imported/delete.png-27dd9adc116bbf3fc8b20a99d1331933.ctex"] [params] diff --git a/addons/popochiu/editor/main_dock/object_row/open.png b/addons/popochiu/editor/main_dock/popochiu_row/images/open.png similarity index 100% rename from addons/popochiu/editor/main_dock/object_row/open.png rename to addons/popochiu/editor/main_dock/popochiu_row/images/open.png diff --git a/addons/popochiu/editor/main_dock/object_row/open.png.import b/addons/popochiu/editor/main_dock/popochiu_row/images/open.png.import similarity index 69% rename from addons/popochiu/editor/main_dock/object_row/open.png.import rename to addons/popochiu/editor/main_dock/popochiu_row/images/open.png.import index 0b13ecac1..cba1fe852 100644 --- a/addons/popochiu/editor/main_dock/object_row/open.png.import +++ b/addons/popochiu/editor/main_dock/popochiu_row/images/open.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://wm7qycjntmfr" -path="res://.godot/imported/open.png-ccf25c46d37431886687865d1152b9d2.ctex" +path="res://.godot/imported/open.png-eb4e739212f91fcaedbead9efc5f731f.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://addons/popochiu/editor/main_dock/object_row/open.png" -dest_files=["res://.godot/imported/open.png-ccf25c46d37431886687865d1152b9d2.ctex"] +source_file="res://addons/popochiu/editor/main_dock/popochiu_row/images/open.png" +dest_files=["res://.godot/imported/open.png-eb4e739212f91fcaedbead9efc5f731f.ctex"] [params] diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd new file mode 100644 index 000000000..dc995d751 --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd @@ -0,0 +1,79 @@ +@tool +extends "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd" + +enum CharacterOptions { + DELETE = MenuOptions.DELETE, + ADD_TO_CORE = Options.ADD_TO_CORE, + SET_AS_PC, +} + +const TAG_ICON = preload("res://addons/popochiu/icons/player_character.png") +const STATE_TEMPLATE = "res://addons/popochiu/engine/templates/character_state_template.gd" + +var is_pc := false : set = set_is_pc + + +#region Godot ###################################################################################### +func _ready() -> 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/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 000000000..8c795063f --- /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/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 000000000..ff4da4d3f --- /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/popochiu_object_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd new file mode 100644 index 000000000..4f6c7f092 --- /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 childrens' 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/object_row/popochiu_object_row.tscn b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn similarity index 73% rename from addons/popochiu/editor/main_dock/object_row/popochiu_object_row.tscn rename to addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn index 7c3a14dd4..df8834a09 100644 --- a/addons/popochiu/editor/main_dock/object_row/popochiu_object_row.tscn +++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=4 format=3 uid="uid://dwtwuqw2hpdpe"] +[gd_scene load_steps=5 format=3 uid="uid://dwbo3pl372ugo"] -[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/object_row/popochiu_object_row.gd" id="1_5tnpr"] +[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_jswnp"] +[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", @@ -11,102 +12,47 @@ data = { "width": 16 } -[sub_resource type="ImageTexture" id="ImageTexture_3sf5i"] -image = SubResource("Image_jswnp") +[sub_resource type="ImageTexture" id="ImageTexture_12sj2"] +image = SubResource("Image_15l6n") -[node name="PopochiuObjectRow" type="HBoxContainer"] -offset_right = 320.0 -offset_bottom = 40.0 -script = ExtResource("1_5tnpr") +[node name="PopochiuMainObjectRow" instance=ExtResource("1_xi41g")] +script = ExtResource("2_g05pm") -[node name="HBoxContainer" type="HBoxContainer" parent="."] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_stretch_ratio = 1.5 - -[node name="Label" type="Label" parent="HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_stretch_ratio = 2.0 -text = "PopochiuObjectRow" - -[node name="FavIcon" type="TextureRect" parent="HBoxContainer"] -visible = false -texture_filter = 1 -layout_mode = 2 -size_flags_horizontal = 10 -size_flags_vertical = 4 -tooltip_text = "Main scene" -texture = SubResource("ImageTexture_3sf5i") - -[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"] -layout_mode = 0 -anchor_right = 1.0 -anchor_bottom = 1.0 -alignment = 2 - -[node name="BtnPlay" type="Button" parent="Panel/ButtonsContainer"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -size_flags_horizontal = 4 -size_flags_vertical = 3 -tooltip_text = "Open in Editor" -icon = SubResource("ImageTexture_3sf5i") -flat = true +[node name="Label" parent="HBoxContainer" index="0"] +text = "PopochiuMainObjectRow" -[node name="BtnOpen" type="Button" parent="Panel/ButtonsContainer"] +[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_3sf5i") +icon = SubResource("ImageTexture_12sj2") flat = true -[node name="BtnScript" type="Button" parent="Panel/ButtonsContainer"] +[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_3sf5i") +icon = SubResource("ImageTexture_12sj2") flat = true -[node name="BtnState" type="Button" parent="Panel/ButtonsContainer"] +[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_3sf5i") +icon = SubResource("ImageTexture_12sj2") flat = true -[node name="BtnStateScript" type="Button" parent="Panel/ButtonsContainer"] +[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_3sf5i") +icon = SubResource("ImageTexture_12sj2") flat = true - -[node name="BtnMenu" type="MenuButton" parent="Panel/ButtonsContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 10 -icon = SubResource("ImageTexture_3sf5i") -switch_on_hover = true -item_count = 2 -popup/item_0/text = "" -popup/item_0/id = -1 -popup/item_0/separator = true -popup/item_1/text = "Remove" -popup/item_1/icon = SubResource("ImageTexture_3sf5i") -popup/item_1/id = 6 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 000000000..3db662092 --- /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 splitted: [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.tscn b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.tscn new file mode 100644 index 000000000..27d9b806d --- /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 000000000..212c53e93 --- /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.tscn b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.tscn new file mode 100644 index 000000000..2d81629cc --- /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 000000000..7dd064c1c --- /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.tscn b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn new file mode 100644 index 000000000..b9e1e209c --- /dev/null +++ b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn @@ -0,0 +1,81 @@ +[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_l4hml"] +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_l4hml") + +[sub_resource type="Image" id="Image_2rn87"] +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_cvrqa"] +image = SubResource("Image_2rn87") + +[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 +size_flags_stretch_ratio = 1.5 + +[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_4qvg7") +switch_on_hover = true +item_count = 2 +popup/item_0/text = "" +popup/item_0/id = -1 +popup/item_0/separator = true +popup/item_1/text = "Remove" +popup/item_1/icon = SubResource("ImageTexture_cvrqa") +popup/item_1/id = 0 diff --git a/addons/popochiu/editor/main_dock/tab_audio.gd b/addons/popochiu/editor/main_dock/tab_audio.gd deleted file mode 100644 index 7a10bde61..000000000 --- a/addons/popochiu/editor/main_dock/tab_audio.gd +++ /dev/null @@ -1,340 +0,0 @@ -# Handles the Audio tab in Popochiu's dock. -@tool -extends VBoxContainer - -const SEARCH_PATH := 'res://game/' -const AudioCue := preload('res://addons/popochiu/engine/audio_manager/audio_cue.gd') -const PopochiuUtils := preload('res://addons/popochiu/engine/others/popochiu_utils.gd') -const AudioManager := preload('res://addons/popochiu/engine/audio_manager/audio_manager.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') - -var main_dock: Panel : set = _set_main_dock -var last_played: Control = null -var last_selected: Control = null - -var _audio_row := preload(\ -'res://addons/popochiu/editor/main_dock/audio_row/popochiu_audio_row.tscn') -# Array with all the paths to files that are already assigned to a category -# in PopochiuData.cfg -var _audio_files_in_group := [] -var _audio_files_to_assign := [] -var _audio_cues_to_create := [] -var _created_audio_cues := 0 -var _utils := PopochiuUtils.new() -# TODO: Remove this. The only reason for doing it is to use its sort_resource_paths -# to sort the audio paths -var _audio_manager := AudioManager.new() - -@onready var _unassigned_group: PopochiuGroup = find_child('UnassignedGroup') -@onready var _groups := { - mx = { - array = 'mx_cues', - group = find_child('MusicGroup') - }, - sfx = { - array = 'sfx_cues', - group = find_child('SFXGroup') - }, - vo = { - array = 'vo_cues', - group = find_child('VoiceGroup') - }, - ui = { - array = 'ui_cues', - group = find_child('UIGroup') - } -} -@onready var _asp: AudioStreamPlayer = find_child('AudioStreamPlayer') -@onready var _btn_scan_files: Button = find_child('BtnScanAudioFiles') - - -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ GODOT ░░░░ -func _ready() -> void: - $PopochiuFilter.groups = _groups - - _btn_scan_files.icon = get_theme_icon('Search', 'EditorIcons') - _btn_scan_files.pressed.connect(search_audio_files) - - -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PUBLIC ░░░░ -func fill_data() -> void: - # Look for audio files without AudioCue - search_audio_files() - - -func search_audio_files() -> void: - # Look PopochiuData.cfg to remove_at entries for AudioCue files that don't - # exists in the project anymore - _group_audio_cues() - - var fs_directory: EditorFileSystemDirectory =\ - EditorInterface.get_resource_filesystem().get_filesystem_path(SEARCH_PATH) - - if not fs_directory: return - - _read_directory(fs_directory) - - if not _audio_cues_to_create.is_empty(): - _created_audio_cues = 0 - var progress: ProgressBar = main_dock.loading_dialog.find_child('Progress') - - progress.max_value = _audio_cues_to_create.size() - (main_dock.loading_dialog as Popup).popup_centered() - - await get_tree().process_frame - - (main_dock.loading_dialog as Popup).reset_size() - (main_dock.loading_dialog as Popup).move_to_center() - - for arr in _audio_cues_to_create: - await _create_audio_cue(arr[0], arr[1]) - progress.value = _created_audio_cues - await get_tree().process_frame - - _group_audio_cues() - _audio_cues_to_create.clear() - - (main_dock.loading_dialog as Popup).hide() - - -func delete_rows(filepaths: Array) -> void: - for filepath in filepaths: - if filepath in _audio_files_to_assign: - for row in _unassigned_group.get_elements(): - if row.file_path == filepath: - row.queue_free() - break - _audio_files_to_assign.erase(filepath) - elif filepath in _audio_files_in_group: - var deleted := false - - for group_dic in _groups.values(): - for row in group_dic.group.get_elements(): - if row.audio_cue.audio.resource_path == filepath: - row.queue_free() - deleted = true - break - if deleted: - _audio_files_in_group.erase(filepath) - break - - -# ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PRIVATE ░░░░ -func _group_audio_cues() -> void: - var entries_to_delete := {} - - # Put already loaded (in PopochiuData.cfg) AudioCues into their corresponding - # group - for key in _groups: - var group_dic: Dictionary = _groups[key] - var group_data: Array = PopochiuResources.get_data_value( - 'audio', group_dic.array, [] - ) - entries_to_delete[key] = [] - - if group_data.is_empty(): continue - - for rp in group_data: - if not FileAccess.file_exists(rp): - entries_to_delete[key].append(rp) - continue - - var ac: AudioCue = load(rp) - - if ac.audio.resource_path in _audio_files_in_group: - # 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.append(ac.audio.resource_path) - - for dic in entries_to_delete: - if entries_to_delete[dic].is_empty(): continue - - var group: String = _groups[dic].array - var paths: Array = PopochiuResources.get_data_value('audio', group, []) - - for rp in entries_to_delete[dic]: - (_groups[dic].group as PopochiuGroup).remove_by_name( - rp.get_file().get_basename().capitalize().to_lower().replace( - ' ', '_' - ) - ) - - paths.erase(rp) - - if paths.is_empty(): - PopochiuResources.erase_data_value('audio', group) - else: - paths.sort_custom( - func (a: String, b: String) -> bool: - return PopochiuUtils.sort_by_file_name(a, b) - ) - PopochiuResources.set_data_value('audio', group, paths) - - -func _create_audio_cue_row(audio_cue: AudioCue) -> HBoxContainer: - var ar: HBoxContainer = _audio_row.instantiate() - - ar.audio_cue = audio_cue - ar.main_dock = main_dock - ar.audio_tab = self - ar.stream_player = _asp - - ar.deleted.connect(_audio_cue_deleted) - - return 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 ['ogg', 'mp3', 'wav', 'opus']: - 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 an - # AudioCue in PopochiuData.cfg - continue - - # Check if the file prefix matches one of the defined for automatic - # group assignation: mx_, sfx_, vo_, ui_ - # TODO: This could be read from a settings file so developers can - # define their own prefixes. - var target := '' - if file_name.find('mx_') > -1: - target = 'music' - elif file_name.find('sfx_') > -1: - target = 'sfx' - elif file_name.find('vo_') > -1: - target = 'voice' - elif file_name.find('ui_') > -1: - target = 'ui' - - if target: - _audio_cues_to_create.append([target, dir.get_file_path(idx)]) - else: - _create_audio_file_row(dir.get_file_path(idx)) - - -func _create_audio_file_row(file_path: String) -> void: - var ar: HBoxContainer = _audio_row.instantiate() - - ar.name = file_path.get_file().get_basename() - ar.file_name = file_path.get_file() - ar.file_path = file_path - ar.main_dock = main_dock - ar.audio_tab = self - ar.stream_player = _asp - - ar.target_clicked.connect(_create_audio_cue.bind(file_path, ar)) - - _unassigned_group.add(ar, true) - _audio_files_to_assign.append(file_path) - - -func _create_audio_cue( - type: String, path: String, audio_row: Container = null -) -> void: - 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: - 'music': - ac = AudioCueMusic.new() - ac.loop = true - _: - ac = AudioCueSound.new() - - var stream: AudioStream = load(path) - 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] Can't save AudioCue: %s" % cue_file_name) - - var res: AudioCue = load('%s/%s' % [path.get_base_dir(), cue_file_name]) - var target := '' - - match type: - 'music': - target = 'mx_cues' - 'sfx': - target = 'sfx_cues' - 'voice': - target = 'vo_cues' - '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 get_tree().process_frame - return - - await EditorInterface.get_resource_filesystem().filesystem_changed - - # ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ - # 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 -# await get_tree().create_timer(0.1).timeout - _group_audio_cues() - else: - _created_audio_cues += 1 - - -func _audio_cue_deleted(file_path: String) -> void: - _audio_files_in_group.erase(file_path) - _create_audio_file_row(file_path) - - -func _set_main_dock(value: Panel) -> void: - main_dock = value 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 000000000..d74c1fe4b --- /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 childrens 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.tscn b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.tscn similarity index 87% rename from addons/popochiu/editor/main_dock/tab_audio.tscn rename to addons/popochiu/editor/main_dock/tab_audio/tab_audio.tscn index 8df29bf51..d16015c0d 100644 --- a/addons/popochiu/editor/main_dock/tab_audio.tscn +++ b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=15 format=3 uid="uid://bpj8jlet25coy"] -[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_audio.gd" id="1_u4f8v"] +[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"] @@ -8,7 +8,7 @@ [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_cmdcv"] +[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", @@ -17,10 +17,10 @@ data = { "width": 16 } -[sub_resource type="ImageTexture" id="ImageTexture_hc2gu"] -image = SubResource("Image_cmdcv") +[sub_resource type="ImageTexture" id="ImageTexture_jd5m0"] +image = SubResource("Image_i4bix") -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_s6wm4"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gdosa"] content_margin_left = 8.0 content_margin_right = 8.0 draw_center = false @@ -30,7 +30,7 @@ border_width_right = 2 border_width_bottom = 2 border_color = Color(0.6, 0.6, 0.6, 1) -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_nl66j"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qmbvx"] content_margin_left = 8.0 content_margin_right = 8.0 draw_center = false @@ -40,7 +40,7 @@ border_width_right = 2 border_width_bottom = 2 border_color = Color(0.6, 0.6, 0.6, 1) -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_p1wtr"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4uhm3"] content_margin_left = 8.0 content_margin_right = 8.0 draw_center = false @@ -50,7 +50,7 @@ border_width_right = 2 border_width_bottom = 2 border_color = Color(0.6, 0.6, 0.6, 1) -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qicwf"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_p4efq"] content_margin_left = 8.0 content_margin_right = 8.0 draw_center = false @@ -60,7 +60,7 @@ border_width_right = 2 border_width_bottom = 2 border_color = Color(0.6, 0.6, 0.6, 1) -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qily0"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_j1gb1"] content_margin_left = 8.0 content_margin_right = 8.0 draw_center = false @@ -76,18 +76,20 @@ anchor_right = 1.0 anchor_bottom = 1.0 script = ExtResource("1_u4f8v") +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] + [node name="BtnScanAudioFiles" type="Button" parent="."] -visible = false +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 8 text = "Scan audio files" -icon = SubResource("ImageTexture_hc2gu") +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_hc2gu") +right_icon = SubResource("ImageTexture_jd5m0") script = ExtResource("2_1v1d0") [node name="ScrollContainer" type="ScrollContainer" parent="."] @@ -100,32 +102,40 @@ 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_s6wm4") +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_nl66j") +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_p1wtr") +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_qicwf") +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_qily0") +theme_override_styles/panel = SubResource("StyleBoxFlat_j1gb1") icon = ExtResource("6_a24xe") title = "Graphic interface" - -[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +can_create = false diff --git a/addons/popochiu/editor/main_dock/tab_ui/create_popup_window/create_popup_window.gd b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd similarity index 84% rename from addons/popochiu/editor/main_dock/tab_ui/create_popup_window/create_popup_window.gd rename to addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd index 9be2a78aa..d19a0b6fb 100644 --- a/addons/popochiu/editor/main_dock/tab_ui/create_popup_window/create_popup_window.gd +++ b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd @@ -2,10 +2,10 @@ extends AcceptDialog const POPOCHIU_POPUP_SCENE :=\ -"res://addons/popochiu/engine/objects/graphic_interface/components/popups/popochiu_popup.tscn" +"res://addons/popochiu/engine/objects/gui/components/popups/popochiu_popup.tscn" const POPOCHIU_POPUP_SCRIPT :=\ -"res://addons/popochiu/engine/templates/graphic_interface/popup_template.gd" -const POPUPS_FOLDER := "res://game/graphic_interface/popups/%s/" +"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" @@ -75,14 +75,15 @@ func _create_popup() -> void: # Add the popup to the Popups node in the graphic interface scene ------------------------------ var popup_node: PopochiuPopup = load(scene_path).instantiate() - var graphic_interface_node := EditorInterface.get_edited_scene_root() + var gui_node := EditorInterface.get_edited_scene_root() - graphic_interface_node.get_node("Popups").add_child(popup_node) - popup_node.owner = graphic_interface_node + 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 ---------------------------------------------- - EditorInterface.get_resource_filesystem().scan() + await PopochiuEditorHelper.filesystem_scanned() + EditorInterface.select_file(scene_path) EditorInterface.open_scene_from_path(scene_path) diff --git a/addons/popochiu/editor/main_dock/tab_ui/create_popup_window/create_popup_window.tscn b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.tscn similarity index 95% rename from addons/popochiu/editor/main_dock/tab_ui/create_popup_window/create_popup_window.tscn rename to addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.tscn index b981da68f..bd6278a15 100644 --- a/addons/popochiu/editor/main_dock/tab_ui/create_popup_window/create_popup_window.tscn +++ b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://bu77q250wow5g"] -[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_ui/create_popup_window/create_popup_window.gd" id="1_4ujlk"] +[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" diff --git a/addons/popochiu/editor/main_dock/tab_ui/tab_ui.gd b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd similarity index 78% rename from addons/popochiu/editor/main_dock/tab_ui/tab_ui.gd rename to addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd index df7fb542d..a0fc7f61f 100644 --- a/addons/popochiu/editor/main_dock/tab_ui/tab_ui.gd +++ b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd @@ -1,27 +1,27 @@ @tool extends VBoxContainer -const COMPONENTS_PATH :=\ -"res://addons/popochiu/engine/objects/graphic_interface/components/" +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( - "graphic_interface.tscn", "commands.gd" + "gui.tscn", "gui_commands.gd" +) +var _gui_templates_helper := preload( + "res://addons/popochiu/editor/helpers/popochiu_gui_templates_helper.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 ------------------------------------------------------------------ +#region Godot ###################################################################################### func _ready() -> void: - btn_script.icon = get_theme_icon('Script', 'EditorIcons') - btn_commands.icon = get_theme_icon('Script', 'EditorIcons') + 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) @@ -31,7 +31,7 @@ func _ready() -> void: #endregion -#region Public ----------------------------------------------------------------- +#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. @@ -43,7 +43,6 @@ func on_scene_changed(gui_node: Node) -> void: get_parent().current_tab = get_index() _clear_elements() - await get_tree().process_frame _read_dir(COMPONENTS_PATH) @@ -73,29 +72,28 @@ func on_scene_changed(gui_node: Node) -> void: ## Opens the graphic interface scene of the game. func open_gui_scene() -> void: - if is_instance_valid(_opened_scene)\ - and _opened_scene is PopochiuGraphicInterface: + 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.set_main_screen_editor("2D") EditorInterface.open_scene_from_path(path) #endregion -#region Private ---------------------------------------------------------------- +#region Private #################################################################################### func _on_script_pressed() -> void: EditorInterface.select_file(_script_path) - EditorInterface.set_main_screen_editor('Script') + 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.set_main_screen_editor("Script") EditorInterface.edit_script(load(_commands_path)) @@ -114,18 +112,20 @@ func _clear_elements() -> void: func _read_dir(path: String) -> void: var dir = DirAccess.open(path) - if dir: - dir.list_dir_begin() + 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) - 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() + element_name = dir.get_next() ## Create the buttons in the tab for GUI components and popups. @@ -139,7 +139,7 @@ func _create_buttons() -> void: btn.set_meta("path", component_path) btn.pressed.connect(_add_component.bind(btn)) - if component_path.find("popups") >= 0: + if "popups" in component_path: %PopupsGroup.add(btn) else: %BaseComponentsGroup.add(btn) @@ -168,18 +168,14 @@ func _update_groups_titles() -> void: if btn.disabled: disabled_count += 1 - %BaseComponentsGroup.set_title_count( - disabled_count, %BaseComponentsGroup.get_elements().size() - ) + %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() - ) + %PopupsGroup.set_title_count(disabled_count, %PopupsGroup.get_elements().size()) ## Create a copy of the selected component (scenes, resources, scripts) in the @@ -187,7 +183,7 @@ func _update_groups_titles() -> void: func _add_component(btn: Button) -> void: btn.disabled = true - var is_popup: bool = btn.get_meta("path").find("popups") >= 0 + 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 @@ -213,7 +209,7 @@ func _add_component(btn: Button) -> void: popups_group.anchors_preset = PRESET_FULL_RECT popups_group.mouse_filter = Control.MOUSE_FILTER_IGNORE - _opened_scene.get_node('Popups').add_child(instance) + _opened_scene.get_node("Popups").add_child(instance) else: _opened_scene.add_child(instance) diff --git a/addons/popochiu/editor/main_dock/tab_ui/tab_ui.tscn b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.tscn similarity index 98% rename from addons/popochiu/editor/main_dock/tab_ui/tab_ui.tscn rename to addons/popochiu/editor/main_dock/tab_gui/tab_gui.tscn index eee66833c..4183f13a2 100644 --- a/addons/popochiu/editor/main_dock/tab_ui/tab_ui.tscn +++ b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=8 format=3 uid="uid://4etgd0rwjgct"] -[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_ui/tab_ui.gd" id="1_xmvtx"] +[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_ui/create_popup_window/create_popup_window.tscn" id="3_3a7ix"] +[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 = { 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 000000000..dfd8e3fb2 --- /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.tscn b/addons/popochiu/editor/main_dock/tab_main/tab_main.tscn new file mode 100644 index 000000000..fa7e1c41d --- /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.gd b/addons/popochiu/editor/main_dock/tab_room/tab_room.gd similarity index 51% rename from addons/popochiu/editor/main_dock/tab_room.gd rename to addons/popochiu/editor/main_dock/tab_room/tab_room.gd index d6df7fa0b..07781e393 100644 --- a/addons/popochiu/editor/main_dock/tab_room.gd +++ b/addons/popochiu/editor/main_dock/tab_room/tab_room.gd @@ -2,113 +2,115 @@ extends VBoxContainer ## Handles the Room tab in Popochiu's dock -const PopochiuObjectRow := preload('res://addons/popochiu/editor/main_dock/object_row/popochiu_object_row.gd') -const Constants := preload('res://addons/popochiu/popochiu_resources.gd') +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 main_dock: Panel : set = set_main_dock -var object_row: PackedScene = null -var opened_room_state_path: String = '' +var opened_room_state_path: String = "" var _rows_paths := [] -var _last_selected: PopochiuObjectRow = null +var _last_selected: PopochiuRoomObjectRow = null var _characters_in_room := [] var _btn_add_character: MenuButton -var _remove_dialog: ConfirmationDialog +var _delete_dialog: PopochiuEditorHelper.DeleteConfirmation @onready var _types: Dictionary = { - Constants.Types.PROP: { - group = find_child('PropsGroup') as PopochiuGroup, - popup = 'CreateProp', - method = 'get_props', + PopochiuResources.Types.PROP: { + group = %PropsGroup as PopochiuGroup, + popup = PopochiuEditorHelper.CREATE_PROP, + method = "get_props", type_class = PopochiuProp, - parent = 'Props' + parent = "Props" }, - Constants.Types.HOTSPOT: { - group = find_child('HotspotsGroup') as PopochiuGroup, - popup = 'CreateHotspot', - method = 'get_hotspots', + PopochiuResources.Types.HOTSPOT: { + group = %HotspotsGroup as PopochiuGroup, + popup = PopochiuEditorHelper.CREATE_HOTSPOT, + method = "get_hotspots", type_class = PopochiuHotspot, - parent = 'Hotspots' + parent = "Hotspots" }, - Constants.Types.REGION: { - group = find_child('RegionsGroup') as PopochiuGroup, - popup = 'CreateRegion', - method = 'get_regions', + PopochiuResources.Types.REGION: { + group = %RegionsGroup as PopochiuGroup, + popup = PopochiuEditorHelper.CREATE_REGION, + method = "get_regions", type_class = PopochiuRegion, - parent = 'Regions' + parent = "Regions" }, - Constants.Types.MARKER: { - group = find_child('MarkersGroup') as PopochiuGroup, - popup = 'CreateMarker', - method = 'get_markers', + PopochiuResources.Types.MARKER: { + group = %MarkersGroup as PopochiuGroup, + popup = PopochiuEditorHelper.CREATE_MARKER, + method = "get_markers", type_class = Marker2D, - parent = 'Markers' + parent = "Markers" }, - Constants.Types.WALKABLE_AREA: { - group = find_child('WalkableAreasGroup') as PopochiuGroup, - popup = 'CreateWalkableArea', - method = 'get_walkable_areas', + PopochiuResources.Types.WALKABLE_AREA: { + group = %WalkableAreasGroup as PopochiuGroup, + popup = PopochiuEditorHelper.CREATE_WALKABLE_AREA, + method = "get_walkable_areas", type_class = PopochiuWalkableArea, - parent = 'WalkableAreas' + parent = "WalkableAreas" }, - Constants.Types.CHARACTER: { - group = find_child('CharactersGroup') as PopochiuGroup, - method = 'get_characters', + PopochiuResources.Types.CHARACTER: { + group = %CharactersGroup as PopochiuGroup, + method = "get_characters", type_class = PopochiuCharacter, - parent = 'Characters' + parent = "Characters" } } -@onready var _room_name: Button = find_child('RoomName') -@onready var _no_room_info: Label = find_child('NoRoomInfo') -@onready var _tool_buttons: HBoxContainer = find_child('ToolButtons') -@onready var _btn_script: Button = _tool_buttons.get_node('BtnScript') -@onready var _btn_resource: Button = _tool_buttons.get_node('BtnResource') -@onready var _btn_resource_script: Button = _tool_buttons.get_node('BtnResourceScript') +@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: - $PopochiuFilter.groups = _types + 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.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( - '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") + "pressed", get_theme_stylebox("pressed", "Button") ) _btn_add_character.about_to_popup.connect(_on_add_character_pressed) - _types[Constants.Types.CHARACTER].group.add_header_button(_btn_add_character) + _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() - $PopochiuFilter.hide() - _no_room_info.show() - _tool_buttons.hide() + 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') + 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) + 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 @@ -123,33 +125,33 @@ func scene_changed(scene_root: Node) -> void: 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!" - ) + 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, null + "rooms", opened_room.script_name, "" ) - PopochiuEditorHelper.undo_redo.history_changed.connect(_check_undoredo_history) + 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.text = opened_room.script_name - _room_name.show() - _tool_buttons.show() - $PopochiuFilter.show() + 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) - if _types[type_id].has('popup'): - _types[type_id].popup.room_opened(opened_room) - _types[type_id].group.enable_create() # Listen to node additions/deletions in container nodes @@ -158,7 +160,7 @@ func scene_changed(scene_root: Node) -> void: 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() + no_room_info.hide() get_parent().current_tab = 1 @@ -167,23 +169,6 @@ func scene_closed(filepath: String) -> void: _clear_content() -#endregion - -#region SetGet ##################################################################################### -func set_main_dock(value: Panel) -> void: - main_dock = value - _remove_dialog = main_dock.delete_dialog - - for t in _types.values(): - if not t.has('popup'): continue - - t.popup = main_dock.get_popup(t.popup) - t.popup.set_main_dock(main_dock) - t.popup.room_tab = self - - t.group.create_clicked.connect(main_dock._open_popup.bind(t.popup)) - - #endregion #region Private #################################################################################### @@ -197,59 +182,55 @@ func _clear_content() -> void: 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 - ) + 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 = '' + opened_room_state_path = "" _characters_in_room.clear() _rows_paths.clear() - _room_name.hide() - _tool_buttons.hide() - $PopochiuFilter.hide() - _no_room_info.show() + 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 in _types.values(): + 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 := '' -) -> PopochiuObjectRow: - var new_obj: PopochiuObjectRow = object_row.instantiate() + 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 # This will be useful for deleting objects with interaction - new_obj.main_dock = main_dock + 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]) + _rows_paths.append("%s/%d/%s" % [opened_room.script_name, type, node_name]) return new_obj -func _select_in_tree(por: PopochiuObjectRow) -> void: +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]) - + var node := opened_room.get_node("%s/%s" % [_types[por.type].parent, por.node_path]) PopochiuEditorHelper.select_node(node) _last_selected = por @@ -261,7 +242,7 @@ func _select_file() -> void: func _open_script() -> void: EditorInterface.select_file(opened_room.get_script().resource_path) - EditorInterface.set_main_screen_editor('Script') + EditorInterface.set_main_screen_editor("Script") EditorInterface.edit_script(opened_room.get_script()) @@ -273,45 +254,35 @@ func _edit_resource() -> void: 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.set_main_screen_editor("Script") EditorInterface.edit_resource(prd.get_script()) # Removes the character from the room -func _on_remove_character_pressed(row: PopochiuObjectRow) -> void: - main_dock.show_confirmation( - 'Remove character in room', - 'Are you sure you want to remove [b]%s[/b] from this room?' % row.name, - '', - Vector2(200, 120) - ) +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) - _remove_dialog.confirmed.connect(_on_remove_character_confirmed.bind(row)) - _remove_dialog.canceled.connect(_on_remove_dialog_hide) + PopochiuEditorHelper.show_delete_confirmation(_delete_dialog) -func _on_remove_dialog_hide() -> void: - _remove_dialog.call_deferred('disconnect', 'confirmed', _on_remove_character_confirmed) - _remove_dialog.call_deferred('disconnect', 'canceled', _on_remove_dialog_hide) - - -func _on_remove_character_confirmed(row: PopochiuObjectRow) -> void: +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() + opened_room.get_node("Characters").get_node("Character%s *" % row.name).queue_free() row.queue_free() EditorInterface.save_scene() - - _on_remove_dialog_hide() -# Fills the list to show after pressing "+ Add character to room" and listens -# to selections to add the clicked character to the room +# 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'): + 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)) @@ -329,85 +300,66 @@ func _on_character_seleced(id: int) -> void: characters_menu.get_item_index(id) ) var instance: PopochiuCharacter = (load( - 'res://game/characters/%s/character_%s.tscn' % [ - char_name.to_snake_case(), - char_name.to_snake_case() - ] + "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) + opened_room.get_node("Characters").add_child(instance) instance.owner = opened_room EditorInterface.save_scene() PopochiuEditorHelper.select_node(instance) -func _create_row_in_dock(type_id: int, child: Node) -> PopochiuObjectRow: - var row: PopochiuObjectRow = null +## Called when a [param child] is added to the room's tree without using the Popochiu dock. +## [param type_id] can be used to clasify 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(' *') + 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' % [ - char_name, 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.tooltip_text = "Remove character from room" remove_btn.flat = true - remove_btn.pressed.connect( - _on_remove_character_pressed.bind(row) - ) - + 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 - ) + 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 := "" + var row_path := child.scene_file_path - if child.script and child.script.resource_path.find('addons') == -1: + if row_path.is_empty() and child.script and not "addons" in child.script.resource_path: row_path = child.script.resource_path - else: - # If the node doesn't have an associated script, then clicking on its - # row should select its scene (.tscn) file - row_path = child.scene_file_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] + return String(child.get_path()).split("%s/" % _types[type_id].parent)[1] func _on_child_added(node: Node, type_id: int) -> void: @@ -428,19 +380,20 @@ func _on_child_removed(node: Node, type_id: int) -> void: if node is PopochiuCharacter: # Get the script_name of the character - node_name = node_name.lstrip('Character').rstrip(' *') + 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 - ]) + _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[Constants.Types.WALKABLE_AREA].method + _types[PopochiuResources.Types.WALKABLE_AREA].method ) if walkable_areas.is_empty(): return diff --git a/addons/popochiu/editor/main_dock/tab_room.tscn b/addons/popochiu/editor/main_dock/tab_room/tab_room.tscn similarity index 86% rename from addons/popochiu/editor/main_dock/tab_room.tscn rename to addons/popochiu/editor/main_dock/tab_room/tab_room.tscn index a8e83f96e..49f8d1ec8 100644 --- a/addons/popochiu/editor/main_dock/tab_room.tscn +++ b/addons/popochiu/editor/main_dock/tab_room/tab_room.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=18 format=3 uid="uid://q1bjkxavt2ay"] -[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_room.gd" id="1_dnc56"] +[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"] @@ -10,7 +10,7 @@ [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_i5q1j"] +[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", @@ -19,10 +19,10 @@ data = { "width": 16 } -[sub_resource type="ImageTexture" id="ImageTexture_ofbcj"] -image = SubResource("Image_i5q1j") +[sub_resource type="ImageTexture" id="ImageTexture_51sph"] +image = SubResource("Image_xqhe0") -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5ijji"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_s3433"] content_margin_left = 8.0 content_margin_right = 8.0 draw_center = false @@ -32,7 +32,7 @@ border_width_right = 2 border_width_bottom = 2 border_color = Color(0.6, 0.6, 0.6, 1) -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_k82fb"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wj0h8"] content_margin_left = 8.0 content_margin_right = 8.0 draw_center = false @@ -42,7 +42,7 @@ border_width_right = 2 border_width_bottom = 2 border_color = Color(0.6, 0.6, 0.6, 1) -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vpalf"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_m7com"] content_margin_left = 8.0 content_margin_right = 8.0 draw_center = false @@ -52,7 +52,7 @@ border_width_right = 2 border_width_bottom = 2 border_color = Color(0.6, 0.6, 0.6, 1) -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_nj6b5"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_b8j46"] content_margin_left = 8.0 content_margin_right = 8.0 draw_center = false @@ -62,7 +62,7 @@ border_width_right = 2 border_width_bottom = 2 border_color = Color(0.6, 0.6, 0.6, 1) -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_d3vfg"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ttmyn"] content_margin_left = 8.0 content_margin_right = 8.0 draw_center = false @@ -72,7 +72,7 @@ border_width_right = 2 border_width_bottom = 2 border_color = Color(0.6, 0.6, 0.6, 1) -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yh7o2"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_30r2w"] content_margin_left = 8.0 content_margin_right = 8.0 draw_center = false @@ -89,37 +89,43 @@ 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_ofbcj") +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_ofbcj") +icon = SubResource("ImageTexture_51sph") [node name="BtnResource" type="Button" parent="ToolButtons"] +unique_name_in_owner = true layout_mode = 2 text = "State" -icon = SubResource("ImageTexture_ofbcj") +icon = SubResource("ImageTexture_51sph") [node name="BtnResourceScript" type="Button" parent="ToolButtons"] +unique_name_in_owner = true layout_mode = 2 text = "State" -icon = SubResource("ImageTexture_ofbcj") +icon = SubResource("ImageTexture_51sph") [node name="RoomScrollContainer" type="ScrollContainer" parent="."] layout_mode = 2 @@ -131,48 +137,56 @@ 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_5ijji") +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_k82fb") +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_vpalf") +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_nj6b5") +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_d3vfg") +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_yh7o2") +theme_override_styles/panel = SubResource("StyleBoxFlat_30r2w") icon = ExtResource("9_4yetu") title = "Characters in room" can_create = false diff --git a/addons/popochiu/editor/popups/create_character/create_character.gd b/addons/popochiu/editor/popups/create_character/create_character.gd deleted file mode 100644 index 9645537ad..000000000 --- a/addons/popochiu/editor/popups/create_character/create_character.gd +++ /dev/null @@ -1,92 +0,0 @@ -@tool -extends 'res://addons/popochiu/editor/popups/creation_popup.gd' -## Creates a new PopochiuCharacter. -## -## It creates all the necessary files to make a PopochiuCharacter to work and to -## store its state: -## - CharacterXXX.tsn -## - CharacterXXX.gd -## - CharacterXXX.tres -## - CharacterXXXState.gd - -# TODO: Giving a proper class name to PopochiuDock eliminates the need to preload it -# and to cast it as the right type later in code. -const PopochiuDock := preload('res://addons/popochiu/editor/main_dock/popochiu_dock.gd') - -var _new_character_name := '' -var _factory: PopochiuCharacterFactory - - -#region Godot ###################################################################################### -func _ready() -> void: - super() - _clear_fields() - - -#endregion - -#region Virtual #################################################################################### -func _create() -> void: - if _new_character_name.is_empty(): - _error_feedback.show() - return - - # Setup the prop helper and use it to create the prop ------------------------------------------ - _factory = PopochiuCharacterFactory.new(_main_dock) - - if _factory.create(_new_character_name) != ResultCodes.SUCCESS: - # TODO: show a message in the popup! - return - - var character_scene = _factory.get_obj_scene() - - # Open the scene in the editor ----------------------------------------------------------------- - await get_tree().create_timer(0.1).timeout - - EditorInterface.select_file(character_scene.scene_file_path) - EditorInterface.open_scene_from_path(character_scene.scene_file_path) - - hide() - - -func _clear_fields() -> void: - _new_character_name = '' - - -#endregion - -#region SetGet ##################################################################################### -func set_main_dock(node: Panel) -> void: - super(node) - - if not _main_dock: return - - -#endregion - -#region Private #################################################################################### -func _update_name(new_text: String) -> void: - super(new_text) - - if _name: - _new_character_name = _name.to_snake_case() - - _info.text = ( - 'In [b]%s[/b] the following files will be created:\ - \n[code]- %s\n- %s\n- %s[/code]' \ - % [ - _main_dock.CHARACTERS_PATH + _new_character_name, - 'character_' + _new_character_name + '.tscn', - 'character_' + _new_character_name + '.gd', - 'character_' + _new_character_name + '.tres' - ] - ) - _info.show() - else: - _info.clear() - _info.hide() - - _update_size_and_position() - - -#endregion diff --git a/addons/popochiu/editor/popups/create_character/create_character.tscn b/addons/popochiu/editor/popups/create_character/create_character.tscn deleted file mode 100644 index a6e96d196..000000000 --- a/addons/popochiu/editor/popups/create_character/create_character.tscn +++ /dev/null @@ -1,50 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://byxufkqv2sncb"] - -[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_character/create_character.gd" id="1_wmnn5"] - -[node name="CreateCharacter" type="ConfirmationDialog"] -size = Vector2i(656, 169) -dialog_hide_on_ok = false -dialog_autowrap = true -script = ExtResource("1_wmnn5") - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 8.0 -offset_top = 8.0 -offset_right = -8.0 -offset_bottom = -49.0 - -[node name="InputContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -text = "Character name" - -[node name="Input" type="LineEdit" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="ErrorFeedback" type="Label" parent="VBoxContainer"] -visible = false -layout_mode = 2 -text = "Character name is mandatory!" - -[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Guide" type="Label" parent="VBoxContainer"] -modulate = Color(1, 1, 1, 0.698039) -layout_mode = 2 -text = "Use PascalCase. No spaces. i.e Glottis or MannyCalavera or HectorLeMans." - -[node name="Info" type="RichTextLabel" parent="VBoxContainer"] -custom_minimum_size = Vector2(640, 0) -layout_mode = 2 -bbcode_enabled = true -fit_content = true -scroll_active = false diff --git a/addons/popochiu/editor/popups/create_dialog/create_dialog.gd b/addons/popochiu/editor/popups/create_dialog/create_dialog.gd deleted file mode 100644 index 0961ce3d8..000000000 --- a/addons/popochiu/editor/popups/create_dialog/create_dialog.gd +++ /dev/null @@ -1,87 +0,0 @@ -# Creates a new PopochiuDialog. -# -# It creates all the necessary files to make a PopochiuDialog to work: -# - `DialogXXX.gd` > The script where the behavior for each dialog option is defined -# - `DialogXXX.tres` > The Resource file used to create the dialog options in the -# Inspector. -@tool -extends 'res://addons/popochiu/editor/popups/creation_popup.gd' - -# TODO: Giving a proper class name to PopochiuDock eliminates the need to preload it -# and to cast it as the right type later in code. -const PopochiuDock := preload('res://addons/popochiu/editor/main_dock/popochiu_dock.gd') - -var _new_dialog_name := '' -var _factory: PopochiuDialogFactory - - -#region Godot ###################################################################################### -func _ready() -> void: - super() - _clear_fields() - - -#endregion - -#region Virtual #################################################################################### -func _create() -> void: - if _new_dialog_name.is_empty(): - _error_feedback.show() - return - - # Setup the prop helper and use it to create the prop ------------------------------------------ - _factory = PopochiuDialogFactory.new(_main_dock) - - if _factory.create(_new_dialog_name) != ResultCodes.SUCCESS: - # TODO: show a message in the popup! - return - - var dialog_resource = _factory.get_obj_resource() - - # Open dialog in the Inspector ----------------------------------------------------------------- - await get_tree().create_timer(0.1).timeout - EditorInterface.select_file(dialog_resource.resource_path) - EditorInterface.edit_resource(load(dialog_resource.resource_path)) - - hide() - - -func _clear_fields() -> void: - _new_dialog_name = '' - - -#endregion - -#region SetGet ##################################################################################### -func set_main_dock(node: Panel) -> void: - super(node) - - if not _main_dock: return - - -#endregion - -#region Private #################################################################################### -func _update_name(new_text: String) -> void: - super(new_text) - - if _name: - _new_dialog_name = _name.to_snake_case() - - _info.text = ( - 'In [b]%s[/b] the following files will be created:\ - \n[code]- %s\n- %s[/code]' \ - % [ - _main_dock.DIALOGS_PATH + _new_dialog_name, - 'dialog_' + _new_dialog_name + '.gd', - 'dialog_' + _new_dialog_name + '.tres' - ]) - _info.show() - else: - _info.clear() - _info.hide() - - _update_size_and_position() - - -#endregion diff --git a/addons/popochiu/editor/popups/create_dialog/create_dialog.tscn b/addons/popochiu/editor/popups/create_dialog/create_dialog.tscn deleted file mode 100644 index 28925a8ad..000000000 --- a/addons/popochiu/editor/popups/create_dialog/create_dialog.tscn +++ /dev/null @@ -1,50 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://rvbosisbkiob"] - -[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_dialog/create_dialog.gd" id="1_sv710"] - -[node name="CreateDialog" type="ConfirmationDialog"] -size = Vector2i(656, 127) -dialog_hide_on_ok = false -dialog_autowrap = true -script = ExtResource("1_sv710") - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 8.0 -offset_top = 8.0 -offset_right = -8.0 -offset_bottom = -36.0 - -[node name="InputContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -text = "Dialog name" - -[node name="Input" type="LineEdit" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="ErrorFeedback" type="Label" parent="VBoxContainer"] -visible = false -layout_mode = 2 -text = "Dialog name is mandatory!" - -[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Guide" type="Label" parent="VBoxContainer"] -modulate = Color(1, 1, 1, 0.698039) -layout_mode = 2 -text = "Use PascalCase. No spaces. i.e EvaDesk or GlottisFirstMeeting." - -[node name="Info" type="RichTextLabel" parent="VBoxContainer"] -custom_minimum_size = Vector2(640, 0) -layout_mode = 2 -bbcode_enabled = true -fit_content = true -scroll_active = false diff --git a/addons/popochiu/editor/popups/create_hotspot/create_hotspot.gd b/addons/popochiu/editor/popups/create_hotspot/create_hotspot.gd deleted file mode 100644 index 79bb94f3a..000000000 --- a/addons/popochiu/editor/popups/create_hotspot/create_hotspot.gd +++ /dev/null @@ -1,76 +0,0 @@ -@tool -extends 'res://addons/popochiu/editor/popups/creation_popup.gd' -# Creates a new hotspot in the room. - -## TODO: remove this legacy... -var room_tab: VBoxContainer = null - -var _room: Node2D = null -var _new_hotspot_name := '' -var _factory: PopochiuHotspotFactory - - -#region Godot ###################################################################################### -func _ready() -> void: - super() - _clear_fields() - - -#endregion - -#region Virtual #################################################################################### -func _create() -> void: - # Setup the region helper and use it to create the hotspot ------------------------------------- - _factory = PopochiuHotspotFactory.new(_main_dock) - - if _factory.create(_new_hotspot_name, _room) != ResultCodes.SUCCESS: - # TODO: show a message in the popup! - return - - var hotspot = _factory.get_obj_scene() - - # Open the properties of the created region in the inspector ----------------------------------- - # Done here because the creation is interactive in this case - await get_tree().create_timer(0.1).timeout - PopochiuEditorHelper.select_node(hotspot) - - hide() - - - -func _clear_fields() -> void: - _new_hotspot_name = '' - - -#endregion - -#region Public ##################################################################################### -func room_opened(r: Node2D) -> void: - _room = r - - -#endregion - -#region Private #################################################################################### -func _update_name(new_text: String) -> void: - super(new_text) - - if _name: - _new_hotspot_name = _name.to_snake_case() - - _info.text = ( - 'In [b]%s[/b] the following file will be created:\n[code]%s[/code]'\ - % [ - _room.scene_file_path.get_base_dir() + '/hotspots', - 'hotspot_' + _new_hotspot_name + '.gd' - ] - ) - _info.show() - else: - _info.clear() - _info.hide() - - _update_size_and_position() - - -#endregion diff --git a/addons/popochiu/editor/popups/create_hotspot/create_hotspot.tscn b/addons/popochiu/editor/popups/create_hotspot/create_hotspot.tscn deleted file mode 100644 index e41eccd16..000000000 --- a/addons/popochiu/editor/popups/create_hotspot/create_hotspot.tscn +++ /dev/null @@ -1,50 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://yybwvwbsf7en"] - -[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_hotspot/create_hotspot.gd" id="1_xka04"] - -[node name="CreateHotspot" type="ConfirmationDialog"] -size = Vector2i(656, 127) -dialog_hide_on_ok = false -dialog_autowrap = true -script = ExtResource("1_xka04") - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 8.0 -offset_top = 8.0 -offset_right = -8.0 -offset_bottom = -49.0 - -[node name="InputContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -text = "Hotspot name" - -[node name="Input" type="LineEdit" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="ErrorFeedback" type="Label" parent="VBoxContainer"] -visible = false -layout_mode = 2 -text = "Hotspot name is mandatory!" - -[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Guide" type="Label" parent="VBoxContainer"] -modulate = Color(1, 1, 1, 0.698039) -layout_mode = 2 -text = "Use PascalCase. No spaces. i.e Sky or CaveEntrance." - -[node name="Info" type="RichTextLabel" parent="VBoxContainer"] -custom_minimum_size = Vector2(640, 0) -layout_mode = 2 -bbcode_enabled = true -fit_content = true -scroll_active = false diff --git a/addons/popochiu/editor/popups/create_inventory_item/create_inventory_item.gd b/addons/popochiu/editor/popups/create_inventory_item/create_inventory_item.gd deleted file mode 100644 index fcf3636f1..000000000 --- a/addons/popochiu/editor/popups/create_inventory_item/create_inventory_item.gd +++ /dev/null @@ -1,90 +0,0 @@ -# Creates a PopochiuInventoryItem. -# -# It creates all the necessary files to make a PopochiuInventoryItem to work and -# to store its state: -# - InventoryXXX.tsn -# - InventoryXXX.gd -# - InventoryXXX.tres -# - InventoryXXXState.gd -@tool -extends 'res://addons/popochiu/editor/popups/creation_popup.gd' - -# TODO: Giving a proper class name to PopochiuDock eliminates the need to preload it -# and to cast it as the right type later in code. -const PopochiuDock := preload('res://addons/popochiu/editor/main_dock/popochiu_dock.gd') - -var _new_item_name := '' -var _factory: PopochiuInventoryItemFactory - - -#region Godot ###################################################################################### -func _ready() -> void: - super() - _clear_fields() - - -#endregion - -#region Virtual #################################################################################### -func _create() -> void: - if _new_item_name.is_empty(): - _error_feedback.show() - return - - # Setup the prop helper and use it to create the prop ------------------------------------------ - _factory = PopochiuInventoryItemFactory.new(_main_dock) - - if _factory.create(_new_item_name) != ResultCodes.SUCCESS: - # TODO: show a message in the popup! - return - var item_scene = _factory.get_obj_scene() - - # Open the scene in the editor ----------------------------------------------------------------- - await get_tree().create_timer(0.1).timeout - EditorInterface.select_file(item_scene.scene_file_path) - EditorInterface.open_scene_from_path(item_scene.scene_file_path) - - hide() - - -func _clear_fields() -> void: - _new_item_name = '' - - -#endregion - -#region SetGet ##################################################################################### -func set_main_dock(node: Panel) -> void: - super(node) - - if not _main_dock: return - - -#endregion - -#region Private #################################################################################### -func _update_name(new_text: String) -> void: - super(new_text) - - if _name: - _new_item_name = _name.to_snake_case() - - _info.text = ( - 'In [b]%s[/b] the following files will be created:\ - \n[code]- %s\n- %s\n- %s[/code]' \ - % [ - _main_dock.INVENTORY_ITEMS_PATH + _new_item_name, - 'inventory_item_' + _new_item_name + '.tscn', - 'inventory_item_' + _new_item_name + '.gd', - 'inventory_item_' + _new_item_name + '.tres' - ] - ) - _info.show() - else: - _info.clear() - _info.hide() - - _update_size_and_position() - - -#endregion diff --git a/addons/popochiu/editor/popups/create_inventory_item/create_inventory_item.tscn b/addons/popochiu/editor/popups/create_inventory_item/create_inventory_item.tscn deleted file mode 100644 index fc4649e30..000000000 --- a/addons/popochiu/editor/popups/create_inventory_item/create_inventory_item.tscn +++ /dev/null @@ -1,50 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://b4xgqqfpot7cc"] - -[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_inventory_item/create_inventory_item.gd" id="4"] - -[node name="CreateInventoryItem" type="ConfirmationDialog"] -size = Vector2i(656, 127) -dialog_hide_on_ok = false -dialog_autowrap = true -script = ExtResource("4") - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 8.0 -offset_top = 8.0 -offset_right = -8.0 -offset_bottom = -49.0 - -[node name="InputContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -text = "Item name" - -[node name="Input" type="LineEdit" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="ErrorFeedback" type="Label" parent="VBoxContainer"] -visible = false -layout_mode = 2 -text = "Item name is mandatory!" - -[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Guide" type="Label" parent="VBoxContainer"] -modulate = Color(1, 1, 1, 0.698039) -layout_mode = 2 -text = "Use PascalCase. No spaces. i.e Scythe or WorkOrder or DeckOfCards." - -[node name="Info" type="RichTextLabel" parent="VBoxContainer"] -custom_minimum_size = Vector2(640, 0) -layout_mode = 2 -bbcode_enabled = true -fit_content = true -scroll_active = false diff --git a/addons/popochiu/editor/popups/create_marker/create_marker.gd b/addons/popochiu/editor/popups/create_marker/create_marker.gd deleted file mode 100644 index f7b5cb6c9..000000000 --- a/addons/popochiu/editor/popups/create_marker/create_marker.gd +++ /dev/null @@ -1,76 +0,0 @@ -@tool -extends 'res://addons/popochiu/editor/popups/creation_popup.gd' -# Creates a new marker in the room. - -## TODO: remove this legacy... -var room_tab: VBoxContainer = null - -var _room: Node2D = null -var _new_marker_name := '' -var _factory: PopochiuMarkerFactory - - -#region Godot ###################################################################################### -func _ready() -> void: - super() - _clear_fields() - - -#endregion - -#region Virtual #################################################################################### -func _create() -> void: - # Setup the region helper and use it to create the marker - _factory = PopochiuMarkerFactory.new(_main_dock) - - if _factory.create(_new_marker_name, _room) != ResultCodes.SUCCESS: - # TODO: show a message in the popup! - return - - var marker = _factory.get_obj_scene() - - # Open the properties of the created region in the inspector - # Done here because the creation is interactive in this case - await get_tree().create_timer(0.1).timeout - PopochiuEditorHelper.select_node(marker) - - hide() - - - -func _clear_fields() -> void: - _new_marker_name = '' - - -#endregion - -#region Public ##################################################################################### -func room_opened(r: Node2D) -> void: - _room = r - - -#endregion - -#region Private #################################################################################### -func _update_name(new_text: String) -> void: - super(new_text) - - if _name: - _new_marker_name = _name.to_snake_case() - - _info.text = ( - 'In [b]%s[/b] the following file will be created:\n[code]%s[/code]'\ - % [ - _room.scene_file_path.get_base_dir() + '/markers', - 'marker_' + _new_marker_name + '.tscn' - ] - ) - _info.show() - else: - _info.clear() - _info.hide() - - _update_size_and_position() - - -#endregion diff --git a/addons/popochiu/editor/popups/create_marker/create_marker.tscn b/addons/popochiu/editor/popups/create_marker/create_marker.tscn deleted file mode 100644 index 885164276..000000000 --- a/addons/popochiu/editor/popups/create_marker/create_marker.tscn +++ /dev/null @@ -1,50 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://cifxp45i4mouu"] - -[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_marker/create_marker.gd" id="1_01ga5"] - -[node name="CreateMarker" type="ConfirmationDialog"] -size = Vector2i(656, 127) -dialog_hide_on_ok = false -dialog_autowrap = true -script = ExtResource("1_01ga5") - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 8.0 -offset_top = 8.0 -offset_right = -8.0 -offset_bottom = -49.0 - -[node name="InputContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -text = "Marker name" - -[node name="Input" type="LineEdit" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="ErrorFeedback" type="Label" parent="VBoxContainer"] -visible = false -layout_mode = 2 -text = "Marker name is mandatory!" - -[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Guide" type="Label" parent="VBoxContainer"] -modulate = Color(1, 1, 1, 0.698039) -layout_mode = 2 -text = "Use PascalCase. No spaces. i.e Sky or CaveEntrance." - -[node name="Info" type="RichTextLabel" parent="VBoxContainer"] -custom_minimum_size = Vector2(640, 0) -layout_mode = 2 -bbcode_enabled = true -fit_content = true -scroll_active = false 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 000000000..5a7ac68c5 --- /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.tscn b/addons/popochiu/editor/popups/create_object/create_character/create_character.tscn new file mode 100644 index 000000000..63326b51c --- /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 000000000..80f3e9162 --- /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.tscn b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.tscn new file mode 100644 index 000000000..459e7569b --- /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 000000000..8f0f4eef4 --- /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.tscn b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.tscn new file mode 100644 index 000000000..329dba767 --- /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 000000000..894e02097 --- /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.tscn b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.tscn new file mode 100644 index 000000000..d3e83adb9 --- /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 000000000..3c25afd50 --- /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.tscn b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.tscn new file mode 100644 index 000000000..8d01d4b7b --- /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 000000000..11e074eae --- /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 childrens' 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.tscn b/addons/popochiu/editor/popups/create_object/create_object.tscn new file mode 100644 index 000000000..813ae6cf7 --- /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 000000000..048054929 --- /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 childrens' 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.tscn b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.tscn new file mode 100644 index 000000000..c2d8e9efa --- /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 000000000..c036e51ad --- /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.tscn b/addons/popochiu/editor/popups/create_object/create_region/create_region.tscn new file mode 100644 index 000000000..09c7c4997 --- /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 000000000..da63c10a2 --- /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.tscn b/addons/popochiu/editor/popups/create_object/create_room/create_room.tscn new file mode 100644 index 000000000..ead6f2892 --- /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 000000000..380c7920c --- /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_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 000000000..0d3b39be6 --- /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.tscn b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.tscn new file mode 100644 index 000000000..360fb76b1 --- /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/create_prop/create_prop.gd b/addons/popochiu/editor/popups/create_prop/create_prop.gd deleted file mode 100644 index dceab8d79..000000000 --- a/addons/popochiu/editor/popups/create_prop/create_prop.gd +++ /dev/null @@ -1,110 +0,0 @@ -@tool -extends 'res://addons/popochiu/editor/popups/creation_popup.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. - -## TODO: remove this legacy... -#const TabRoom := preload("res://addons/popochiu/editor/main_dock/tab_room.gd") - -## TODO: remove this legacy... -var room_tab: VBoxContainer = null - -var _room: Node2D = null -var _new_prop_name := '' -var _factory: PopochiuPropFactory - -@onready var _interaction_checkbox: CheckBox = find_child('InteractionCheckbox') - - -#region Godot ###################################################################################### -func _ready() -> void: - super() - _clear_fields() - - _interaction_checkbox.toggled.connect(_interaction_toggled) - - -#endregion - -#region Virtual #################################################################################### -func _create() -> void: - if _new_prop_name.is_empty(): - _error_feedback.show() - return - - # Setup the prop helper and use it to create the prop ------------------------------------------ - _factory = PopochiuPropFactory.new(_main_dock) - - if _factory.create( - _new_prop_name, _room, - _interaction_checkbox.button_pressed - ) != ResultCodes.SUCCESS: - # TODO: show a message in the popup! - return - - var prop_instance = _factory.get_obj_scene() - - # Open the properties of the created prop in the inspector ------------------------------------- - # Done here because the creation is interactive in this case - EditorInterface.get_resource_filesystem().scan() - - await get_tree().create_timer(0.1).timeout - - EditorInterface.edit_node(prop_instance) - EditorInterface.select_file(prop_instance.scene_file_path) - - hide() - - -func _clear_fields() -> void: - _new_prop_name = '' - _interaction_checkbox.button_pressed = false - - -#endregion - -#region Public ##################################################################################### -func room_opened(r: Node2D) -> void: - _room = r - - -#endregion - -#region Private #################################################################################### -func _update_name(new_text: String) -> void: - super(new_text) - - if _name: - _new_prop_name = _name.to_snake_case() - - _update_info() - _info.show() - else: - _info.clear() - _info.hide() - - _update_size_and_position() - - -func _interaction_toggled(is_pressed: bool) -> void: - if is_pressed and not _name.is_empty(): - _update_info() - else: - _info.clear() - - _update_size_and_position() - - -func _update_info() -> void: - _info.text = ( - 'In [b]%s[/b] the following file will be created:\n[code]%s[/code]' \ - % [ - _room.scene_file_path.get_base_dir() + '/props', - 'prop_' + _new_prop_name + '.gd' - ] - ) - - -#endregion diff --git a/addons/popochiu/editor/popups/create_prop/create_prop.tscn b/addons/popochiu/editor/popups/create_prop/create_prop.tscn deleted file mode 100644 index 8f009554c..000000000 --- a/addons/popochiu/editor/popups/create_prop/create_prop.tscn +++ /dev/null @@ -1,66 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://cd4waqogbca4x"] - -[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_prop/create_prop.gd" id="1_ku3uq"] - -[node name="CreateProp" type="ConfirmationDialog"] -size = Vector2i(656, 155) -visible = true -dialog_hide_on_ok = false -dialog_autowrap = true -script = ExtResource("1_ku3uq") - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 8.0 -offset_top = 8.0 -offset_right = -8.0 -offset_bottom = -49.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="InputContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -text = "Prop name" - -[node name="Input" type="LineEdit" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -draw_control_chars = true - -[node name="InteractionContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBoxContainer/InteractionContainer"] -layout_mode = 2 -text = "Will have interaction?" - -[node name="InteractionCheckbox" type="CheckBox" parent="VBoxContainer/InteractionContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="ErrorFeedback" type="Label" parent="VBoxContainer"] -visible = false -layout_mode = 2 -text = "Prop name is mandatory!" - -[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Guide" type="Label" parent="VBoxContainer"] -modulate = Color(1, 1, 1, 0.698039) -layout_mode = 2 -text = "Use PascalCase. No spaces. i.e Bucket or WineBottle." - -[node name="Info" type="RichTextLabel" parent="VBoxContainer"] -custom_minimum_size = Vector2(640, 0) -layout_mode = 2 -bbcode_enabled = true -fit_content = true -scroll_active = false diff --git a/addons/popochiu/editor/popups/create_region/create_region.gd b/addons/popochiu/editor/popups/create_region/create_region.gd deleted file mode 100644 index eef0a58fa..000000000 --- a/addons/popochiu/editor/popups/create_region/create_region.gd +++ /dev/null @@ -1,79 +0,0 @@ -# Allows you to create a new Region for a room. - -@tool -extends 'res://addons/popochiu/editor/popups/creation_popup.gd' - -## TODO: remove this legacy... -var room_tab: VBoxContainer = null - -var _room: Node2D = null -var _new_region_name := '' -var _factory: PopochiuRegionFactory - - -#region Godot ###################################################################################### -func _ready() -> void: - super() - _clear_fields() - - -#endregion - -#region Virtual #################################################################################### -func _create() -> void: - if _new_region_name.is_empty(): - _error_feedback.show() - return - - # Setup the region helper and use it to create the region -------------------------------------- - _factory = PopochiuRegionFactory.new(_main_dock) - - if _factory.create(_new_region_name, _room) != ResultCodes.SUCCESS: - # TODO: show a message in the popup! - return - - var region = _factory.get_obj_scene() - - # Open the properties of the created region in the inspector ----------------------------------- - # Done here because the creation is interactive in this case - await get_tree().create_timer(0.1).timeout - PopochiuEditorHelper.select_node(region) - - hide() - - -func _clear_fields() -> void: - _new_region_name = '' - - -#endregion - -#region Public ##################################################################################### -func room_opened(r: Node2D) -> void: - _room = r - - -#endregion - -#region Private #################################################################################### -func _update_name(new_text: String) -> void: - super(new_text) - - if _name: - _new_region_name = _name.to_snake_case() - _info.text = ( - 'In [b]%s[/b] the following files will be created:\n[code]%s[/code]' \ - % [ - _room.scene_file_path.get_base_dir() + '/regions', - 'region_' + _new_region_name + '.gd' - ] - ) - _info.show() - else: - _info.clear() - _info.hide() - - _update_size_and_position() - - -#endregion diff --git a/addons/popochiu/editor/popups/create_region/create_region.tscn b/addons/popochiu/editor/popups/create_region/create_region.tscn deleted file mode 100644 index cb08a6cae..000000000 --- a/addons/popochiu/editor/popups/create_region/create_region.tscn +++ /dev/null @@ -1,50 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://chnpxfme1xmpb"] - -[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_region/create_region.gd" id="1_yv40h"] - -[node name="CreateRegion" type="ConfirmationDialog"] -size = Vector2i(656, 127) -dialog_hide_on_ok = false -dialog_autowrap = true -script = ExtResource("1_yv40h") - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 8.0 -offset_top = 8.0 -offset_right = -8.0 -offset_bottom = -36.0 - -[node name="InputContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -text = "Region name" - -[node name="Input" type="LineEdit" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="ErrorFeedback" type="Label" parent="VBoxContainer"] -visible = false -layout_mode = 2 -text = "Region name is mandatory!" - -[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Guide" type="Label" parent="VBoxContainer"] -modulate = Color(1, 1, 1, 0.698039) -layout_mode = 2 -text = "Use PascalCase. No spaces. i.e Sand or StickyFloor." - -[node name="Info" type="RichTextLabel" parent="VBoxContainer"] -custom_minimum_size = Vector2(640, 0) -layout_mode = 2 -bbcode_enabled = true -fit_content = true -scroll_active = false diff --git a/addons/popochiu/editor/popups/create_room/create_room.gd b/addons/popochiu/editor/popups/create_room/create_room.gd deleted file mode 100644 index 32cd30de7..000000000 --- a/addons/popochiu/editor/popups/create_room/create_room.gd +++ /dev/null @@ -1,123 +0,0 @@ -@tool -extends 'res://addons/popochiu/editor/popups/creation_popup.gd' -## Creates a PopochiuRoom. -## -## It creates all the necessary files to make a PopochiuRoom to work and -## to store its state: -## - RoomXXX.tsn -## - RoomXXX.gd -## - RoomXXX.tres -## - RoomXXXState.gd - -# TODO: Giving a proper class name to PopochiuDock eliminates the need to preload it -# and to cast it as the right type later in code. -const PopochiuDock := preload('res://addons/popochiu/editor/main_dock/popochiu_dock.gd') - -var show_set_as_main := false : set = _set_show_set_as_main - -var _new_room_name := '' -var _factory: PopochiuRoomFactory - -@onready var set_as_main_panel: PanelContainer = %SetAsMainPanel -@onready var btn_is_main: CheckBox = %BtnIsMain - - -#region Godot ###################################################################################### -func _ready() -> void: - super() - about_to_popup.connect(_check_if_first_room) - - _clear_fields() - set_as_main_panel.hide() - - -#endregion - -#region Virtual #################################################################################### -func _create() -> void: - if _new_room_name.is_empty(): - _error_feedback.show() - return - - # Setup the prop helper and use it to create the prop ------------------------------------------ - _factory = PopochiuRoomFactory.new(_main_dock) - - if _factory.create( - _new_room_name, - btn_is_main.button_pressed - ) != ResultCodes.SUCCESS: - # TODO: show a message in the popup! - return - - var room_scene = _factory.get_obj_scene() - - # Open the scene in the editor ----------------------------------------------------------------- - await get_tree().create_timer(0.1).timeout - EditorInterface.select_file(room_scene.scene_file_path) - EditorInterface.open_scene_from_path(room_scene.scene_file_path) - - # That's all! ---------------------------------------------------------------------------------- - clear_fields() - hide() - - -func _clear_fields() -> void: - _new_room_name = '' - btn_is_main.button_pressed = false - - -func _on_about_to_popup() -> void: - PopochiuUtils.override_font(%RtlIsMain, 'normal_font', get_theme_font("main", "EditorFonts")) - PopochiuUtils.override_font(%RtlIsMain, 'bold_font', get_theme_font("bold", "EditorFonts")) - - -#endregion - -#region SetGet ##################################################################################### -func set_main_dock(node: Panel) -> void: - super(node) - - if not _main_dock: return - - -#endregion - -#region Private #################################################################################### -func _update_name(new_text: String) -> void: - super(new_text) - - if _name: - _new_room_name = _name.to_snake_case() - - _info.text = ( - 'In [b]%s[/b] the following files will be created:\ - \n[code]- %s\n- %s\n- %s[/code]' \ - % [ - _main_dock.ROOMS_PATH + _new_room_name, - 'room_' + _new_room_name + '.tscn', - 'room_' + _new_room_name + '.gd', - 'room_' + _new_room_name + '.tres' - ] - ) - _info.show() - else: - _info.clear() - _info.hide() - - _update_size_and_position() - - -func _check_if_first_room() -> void: - # Display a checkbox to set the room as the main scene of the project if it's the first created - self.show_set_as_main = PopochiuResources.get_section('rooms').is_empty() - - -func _set_show_set_as_main(value: bool) -> void: - show_set_as_main = value - - if not set_as_main_panel: return - - set_as_main_panel.visible = value - - -#endregion diff --git a/addons/popochiu/editor/popups/create_room/create_room.tscn b/addons/popochiu/editor/popups/create_room/create_room.tscn deleted file mode 100644 index d935bb308..000000000 --- a/addons/popochiu/editor/popups/create_room/create_room.tscn +++ /dev/null @@ -1,75 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://dk0qnjdqvhygp"] - -[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_room/create_room.gd" id="1_peul5"] - -[node name="CreateRoom" type="ConfirmationDialog"] -title = "Create Room" -size = Vector2i(684, 219) -dialog_hide_on_ok = false -dialog_autowrap = true -script = ExtResource("1_peul5") - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 8.0 -offset_top = 8.0 -offset_right = -8.0 -offset_bottom = -49.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="InputContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -text = "Room name" - -[node name="Input" type="LineEdit" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="ErrorFeedback" type="Label" parent="VBoxContainer"] -visible = false -layout_mode = 2 -text = "A room name is mandatory!" - -[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Guide" type="Label" parent="VBoxContainer"] -modulate = Color(1, 1, 1, 0.698039) -layout_mode = 2 -text = "Use PascalCase. No spaces. i.e. Garage or CasinoInterior." - -[node name="SetAsMainPanel" type="PanelContainer" parent="VBoxContainer"] -unique_name_in_owner = true -visible = false -layout_mode = 2 - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/SetAsMainPanel"] -layout_mode = 2 - -[node name="RtlIsMain" type="RichTextLabel" parent="VBoxContainer/SetAsMainPanel/HBoxContainer"] -unique_name_in_owner = true -custom_minimum_size = Vector2(640, 0) -layout_mode = 2 -size_flags_horizontal = 3 -bbcode_enabled = true -text = "This will be Popochiu's first room. Do you want it to become the main scene of the project? This will modify Settings: application/run/main_scene." -fit_content = true -scroll_active = false - -[node name="BtnIsMain" type="CheckBox" parent="VBoxContainer/SetAsMainPanel/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 - -[node name="Info" type="RichTextLabel" parent="VBoxContainer"] -custom_minimum_size = Vector2(640, 0) -layout_mode = 2 -bbcode_enabled = true -fit_content = true -scroll_active = false diff --git a/addons/popochiu/editor/popups/create_walkable_area/create_walkable_area.gd b/addons/popochiu/editor/popups/create_walkable_area/create_walkable_area.gd deleted file mode 100644 index 9d4816285..000000000 --- a/addons/popochiu/editor/popups/create_walkable_area/create_walkable_area.gd +++ /dev/null @@ -1,77 +0,0 @@ -# Creates a new walkable area in a room. -@tool -extends 'res://addons/popochiu/editor/popups/creation_popup.gd' - -## TODO: remove this legacy... -var room_tab: VBoxContainer = null - -var _room: Node2D = null -var _new_walkable_area_name := '' -var _factory: PopochiuWalkableAreaFactory - - -#region Godot ###################################################################################### -func _ready() -> void: - super() - _clear_fields() - - -#endregion - -#region Virtual #################################################################################### -func _create() -> void: - # Setup the region helper and use it to create the region -------------------------------------- - _factory = PopochiuWalkableAreaFactory.new(_main_dock) - - if _factory.create(_new_walkable_area_name, _room) != ResultCodes.SUCCESS: - # TODO: show a message in the popup! - return - - var walkable_area = _factory.get_obj_scene() - - # Open the properties of the created region in the inspector ----------------------------------- - # Done here because the creation is interactive in this case - await get_tree().create_timer(0.1).timeout - PopochiuEditorHelper.select_node(walkable_area) - - hide() - - -func _clear_fields() -> void: - super() - - _new_walkable_area_name = '' - - -#endregion - -#region Public ##################################################################################### -func room_opened(r: Node2D) -> void: - _room = r - - -#endregion - -#region Private #################################################################################### -func _update_name(new_text: String) -> void: - super(new_text) - - if _name: - _new_walkable_area_name = _name.to_snake_case() - - _info.text = ( - 'In [b]%s[/b] the following files will be created: [code]%s[/code]'\ - % [ - _room.scene_file_path.get_base_dir() + '/walkable_areas', - 'walkable_area_' + _new_walkable_area_name + '.gd' - ] - ) - _info.show() - else: - _info.clear() - _info.hide() - - _update_size_and_position() - - -#endregion diff --git a/addons/popochiu/editor/popups/create_walkable_area/create_walkable_area.tscn b/addons/popochiu/editor/popups/create_walkable_area/create_walkable_area.tscn deleted file mode 100644 index 20b63ab41..000000000 --- a/addons/popochiu/editor/popups/create_walkable_area/create_walkable_area.tscn +++ /dev/null @@ -1,50 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://c054k1ux04waq"] - -[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_walkable_area/create_walkable_area.gd" id="1_bvuft"] - -[node name="CreateWalkableArea" type="ConfirmationDialog"] -size = Vector2i(656, 127) -dialog_hide_on_ok = false -dialog_autowrap = true -script = ExtResource("1_bvuft") - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 8.0 -offset_top = 8.0 -offset_right = -8.0 -offset_bottom = -36.0 - -[node name="InputContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -text = "Walkable Area3D name" - -[node name="Input" type="LineEdit" parent="VBoxContainer/InputContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="ErrorFeedback" type="Label" parent="VBoxContainer"] -visible = false -layout_mode = 2 -text = "Walkable Area3D name is mandatory!" - -[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Guide" type="Label" parent="VBoxContainer"] -modulate = Color(1, 1, 1, 0.698039) -layout_mode = 2 -text = "Use PascalCase. No spaces. i.e Floor or SuspendedBridge.." - -[node name="Info" type="RichTextLabel" parent="VBoxContainer"] -custom_minimum_size = Vector2(640, 0) -layout_mode = 2 -bbcode_enabled = true -fit_content = true -scroll_active = false diff --git a/addons/popochiu/editor/popups/creation_popup.gd b/addons/popochiu/editor/popups/creation_popup.gd deleted file mode 100644 index 27d6b9e7a..000000000 --- a/addons/popochiu/editor/popups/creation_popup.gd +++ /dev/null @@ -1,87 +0,0 @@ -extends ConfirmationDialog - -var _name := '' -var _main_dock: Panel : set = set_main_dock - -@onready var _input: LineEdit = find_child('Input') -@onready var _error_feedback: Label = find_child('ErrorFeedback') -@onready var _info: RichTextLabel = find_child('Info') - - -#region Godot ###################################################################################### -func _ready() -> void: - register_text_enter(_input) - - # Connect to own signals - confirmed.connect(_create) - canceled.connect(clear_fields) - close_requested.connect(clear_fields) - about_to_popup.connect(on_about_to_popup) - - # Connect to childs' signals - _input.text_changed.connect(_update_name) - - -#endregion - -#region Virtual #################################################################################### -func _create() -> void: - pass - - -func _clear_fields() -> void: - pass - - -func _on_about_to_popup() -> void: - pass - - -#endregion - -#region Public ##################################################################################### -func clear_fields() -> void: - _input.clear() - _error_feedback.hide() - _info.clear() - _info.size = _info.custom_minimum_size - _clear_fields() - - -func on_about_to_popup() -> void: - PopochiuUtils.override_font( - _info, 'normal_font', get_theme_font("main", "EditorFonts") - ) - PopochiuUtils.override_font( - _info, 'bold_font', get_theme_font("bold", "EditorFonts") - ) - PopochiuUtils.override_font( - _info, 'mono_font', get_theme_font("source", "EditorFonts") - ) - - _on_about_to_popup() - - -#endregion - -#region SetGet ##################################################################################### -func set_main_dock(value: Panel) -> void: - _main_dock = value - - -#endregion - -#region Private #################################################################################### -func _update_name(new_text: String) -> void: - if _error_feedback.visible: - _error_feedback.hide() - - _name = new_text.to_pascal_case() - - -func _update_size_and_position() -> void: - reset_size() - move_to_center() - - -#endregion diff --git a/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd index 48e4e1c65..4e11fb001 100644 --- a/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd +++ b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd @@ -1,30 +1,30 @@ @tool -extends ConfirmationDialog +extends Control -@onready var message: RichTextLabel = $VBoxContainer/Message -@onready var ask: RichTextLabel = $VBoxContainer/Extra/HBoxContainer/Ask +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 Virtual #################################################################################### -func _on_about_to_popup() -> void: - PopochiuUtils.override_font( - message, 'normal_font', get_theme_font("main", "EditorFonts") - ) - PopochiuUtils.override_font( - message, 'bold_font', get_theme_font("bold", "EditorFonts") - ) - PopochiuUtils.override_font( - message, 'mono_font', get_theme_font("source", "EditorFonts") - ) - PopochiuUtils.override_font( - ask, 'normal_font', get_theme_font("main", "EditorFonts") - ) - PopochiuUtils.override_font( - ask, 'bold_font', get_theme_font("bold", "EditorFonts") - ) - PopochiuUtils.override_font( - ask, 'mono_font', get_theme_font("source", "EditorFonts") - ) + +#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.tscn b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.tscn index 0fc0ba6e7..2eaa3509b 100644 --- a/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.tscn +++ b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.tscn @@ -2,39 +2,49 @@ [ext_resource type="Script" path="res://addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd" id="1_j7hpd"] -[node name="DeleteConfirmation" type="ConfirmationDialog"] -size = Vector2i(656, 108) -dialog_autowrap = true +[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="VBoxContainer" type="VBoxContainer" parent="."] -offset_left = 8.0 -offset_top = 8.0 -offset_right = 648.0 -offset_bottom = 59.0 +[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="Message" type="RichTextLabel" parent="VBoxContainer"] +[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 -size_flags_horizontal = 3 bbcode_enabled = true -text = "Se va a eliminar algo." +text = "You're gonna delete [b]something[/b]" fit_content = true -scroll_active = false -[node name="Extra" type="PanelContainer" parent="VBoxContainer"] -custom_minimum_size = Vector2(640, 0) +[node name="Extra" type="PanelContainer" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true layout_mode = 2 -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/Extra"] +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Extra"] layout_mode = 2 -[node name="Ask" type="RichTextLabel" parent="VBoxContainer/Extra/HBoxContainer"] +[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 = "Eliminar también carpeta." +text = "Delete also [b]this[/b]?" fit_content = true -scroll_active = false -[node name="CheckBox" type="CheckBox" parent="VBoxContainer/Extra/HBoxContainer"] +[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/loading/loading.tscn b/addons/popochiu/editor/popups/loading/loading.tscn deleted file mode 100644 index 571e876dc..000000000 --- a/addons/popochiu/editor/popups/loading/loading.tscn +++ /dev/null @@ -1,33 +0,0 @@ -[gd_scene format=2] - -[node name="Loading" type="PopupPanel"] -offset_right = 320.0 -offset_bottom = 180.0 -minimum_size = Vector2( 320, 96 ) -exclusive = true - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 4.0 -offset_top = 4.0 -offset_right = -4.0 -offset_bottom = -4.0 -alignment = 1 - -[node name="Label" type="Label" parent="VBoxContainer"] -offset_top = 60.0 -offset_right = 320.0 -offset_bottom = 92.0 -minimum_size = Vector2( 160, 32 ) -text = "Creating audio cues..." -align = 1 -valign = 1 - -[node name="Progress" type="ProgressBar" parent="VBoxContainer"] -offset_left = 32.0 -offset_top = 96.0 -offset_right = 288.0 -offset_bottom = 120.0 -minimum_size = Vector2( 256, 24 ) -size_flags_horizontal = 4 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 000000000..8e94c6be9 --- /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.tscn b/addons/popochiu/editor/popups/migrations_panel/migration_step.tscn new file mode 100644 index 000000000..e966d7024 --- /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 000000000..88e863860 --- /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.tscn b/addons/popochiu/editor/popups/migrations_panel/migration_tab.tscn new file mode 100644 index 000000000..df2ee9f9b --- /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 000000000..4442e9b70 --- /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.tscn b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.tscn new file mode 100644 index 000000000..f29ed1ef5 --- /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 000000000..fb0a88548 --- /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.tscn b/addons/popochiu/editor/popups/progress/progress.tscn new file mode 100644 index 000000000..ec4790fd5 --- /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/godot_tools_dark.png b/addons/popochiu/editor/popups/setup/godot_tools_dark.png deleted file mode 100644 index d22aa9d7f..000000000 Binary files a/addons/popochiu/editor/popups/setup/godot_tools_dark.png and /dev/null differ diff --git a/addons/popochiu/editor/popups/setup/godot_tools_light.png b/addons/popochiu/editor/popups/setup/godot_tools_light.png deleted file mode 100644 index 69400cbd1..000000000 Binary files a/addons/popochiu/editor/popups/setup/godot_tools_light.png and /dev/null differ diff --git a/addons/popochiu/editor/popups/setup/godot_tools_light.png.import b/addons/popochiu/editor/popups/setup/godot_tools_light.png.import deleted file mode 100644 index 5f405a0db..000000000 --- a/addons/popochiu/editor/popups/setup/godot_tools_light.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dl7ht58auerks" -path="res://.godot/imported/godot_tools_light.png-84d703d95dbba09c2217d356a6e6a064.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/popochiu/editor/popups/setup/godot_tools_light.png" -dest_files=["res://.godot/imported/godot_tools_light.png-84d703d95dbba09c2217d356a6e6a064.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/popups/setup/setup.gd b/addons/popochiu/editor/popups/setup/setup.gd index c17b54671..1a7f5c893 100644 --- a/addons/popochiu/editor/popups/setup/setup.gd +++ b/addons/popochiu/editor/popups/setup/setup.gd @@ -1,23 +1,30 @@ @tool -extends AcceptDialog +extends Control -signal gui_selected(gui_name: String, on_complete: Callable) signal template_copy_completed - -const SCALE_MESSAGE :=\ -"[center]▶ Base size = 320x180 | [b]scale = ( %.2f, %.2f )[/b] ◀[/center]\n" +\ -"By default the GUI will scale to match your game size. " +\ -"You can change this in [img]%s[/img] [b]Settings[/b] with the" +\ -" [code]Scale Gui[/code] checkbox." -const COPY_ALPHA := .1 -const GUITemplateButton := preload( +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" ) - -var es: EditorSettings = null +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 @@ -26,8 +33,8 @@ var _is_closing := false @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: GridContainer = %GUITemplates +# ---- 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 @@ -41,11 +48,6 @@ var _is_closing := false #region Godot ###################################################################################### func _ready() -> void: - # Connect to own signals - confirmed.connect(_on_close) - close_requested.connect(_on_close) - about_to_popup.connect(_on_about_to_popup) - # Connect to child signals game_width.value_changed.connect(_update_scale) game_height.value_changed.connect(_update_scale) @@ -54,21 +56,61 @@ func _ready() -> void: # Set default state template_description_container.hide() template_description.text = "" - - hide() #endregion #region Public ##################################################################################### -func appear(show_welcome := false) -> void: +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 es.get_setting("interface/theme/preset").find("Light3D") > -1 else "#fff" + "#000" if "Light3D" in _es.get_setting("interface/theme/preset") else "#fff" ) scale_message.modulate.a = 0.8 @@ -77,8 +119,7 @@ func appear(show_welcome := false) -> void: ) if not show_welcome: - welcome.text =\ - "[center][shake][b]POPOCHIU \\( u )3(u)/[/b][/shake][/center]" + welcome.text = "[center][b]POPOCHIU [shake]\\( u )3(u)/[/shake][/b][/center]" btn_change_template.disabled = true btn_change_template.show() @@ -89,14 +130,14 @@ func appear(show_welcome := false) -> void: test_height.value = ProjectSettings.get_setting(PopochiuResources.TEST_HEIGHT) scale_message.text = _get_scale_message() - game_type.selected = 0 + 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 = 1 + game_type.selected = GameTypes.HD "keep": - game_type.selected = 2 + game_type.selected = GameTypes.RETRO_PIXEL # Load the list of templates await _load_templates() @@ -105,9 +146,7 @@ func appear(show_welcome := false) -> void: if show_welcome: # Make Pixel the default game type checked during first run - game_type.selected = 2 - - popup_centered(min_size) + game_type.selected = GameTypes.RETRO_PIXEL if PopochiuResources.GUI_GAME_SCENE in EditorInterface.get_open_scenes(): _show_gui_warning() @@ -117,68 +156,19 @@ func appear(show_welcome := false) -> void: template_description_container.hide() - await get_tree().process_frame - reset_size() - - await get_tree().process_frame - move_to_center() + _update_size() #endregion #region Private #################################################################################### -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: - 1: - ProjectSettings.set_setting(PopochiuResources.STRETCH_MODE, "canvas_items") - ProjectSettings.set_setting(PopochiuResources.STRETCH_ASPECT, "expand") - - PopochiuConfig.set_pixel_art_textures(false) - 2: - ProjectSettings.set_setting(PopochiuResources.STRETCH_MODE, "canvas_items") - ProjectSettings.set_setting(PopochiuResources.STRETCH_ASPECT, "keep") - - PopochiuConfig.set_pixel_art_textures(true) - - if PopochiuResources.get_data_value("setup", "done", false) == false: - _copy_template(true) - - -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 _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) / Vector2(320.0, 180.0) - return SCALE_MESSAGE % [ - scale.x, scale.y, - "res://addons/popochiu/editor/popups/setup/godot_tools_%s.png" %\ - ("light" if es.get_setting("interface/theme/preset").find("Light") > -1\ - else "dark"), - ] + 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: @@ -197,6 +187,8 @@ func _on_gui_template_selected(button: GUITemplateButton) -> void: btn_change_template.disabled = ( _selected_template.name == PopochiuResources.get_data_value("ui", "template", "") ) + + _update_size() func _select_config_template() -> void: @@ -214,13 +206,7 @@ func _select_config_template() -> void: _on_gui_template_selected(btn) if not _selected_template: - _on_gui_template_selected(gui_templates.get_child(0)) - - -func _update_imports() -> void: - # TODO: Browse file system for .import files for images and update them to - # match the current Game type selection - pass + _on_gui_template_selected(gui_templates.get_child(3)) func _show_gui_warning() -> void: @@ -228,8 +214,8 @@ func _show_gui_warning() -> void: _setup_inner_dialog( warning_dialog, "GUI template warning", - "The GUI scene (graphic_interface) is currently opened in the Editor.\n\nIn order to change\ - the GUI template please close that scene first." + "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) @@ -242,7 +228,7 @@ func _show_template_change_confirmation() -> void: 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/graphic_interface/.\n\nAre you sure you want to make the change?" + in res://game/gui/.\n\nAre you sure you want to make the change?" ) confirmation_dialog.confirmed.connect( @@ -264,10 +250,10 @@ func _setup_inner_dialog(dialog: Window, ttl: String, txt: String) -> void: func _load_templates() -> void: for idx in range(1, gui_templates.get_child_count()): - gui_templates.get_child(idx).queue_free() + gui_templates.get_child(idx).free() # This is better than awating for SceneTree.process_frame - await RenderingServer.frame_post_draw + 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( @@ -287,27 +273,28 @@ func _load_templates() -> void: 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_ok_button().disabled = true + get_parent().get_ok_button().disabled = true $PanelContainer/VBoxContainer.modulate.a = COPY_ALPHA copy_process_label.text = "" copy_process_bar.value = 0 - gui_selected.emit(_selected_template.name, _template_copy_progressed, _template_copy_completed) + 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: - show() + get_parent().visible = true await template_copy_completed - - hide() func _template_copy_progressed(value: int, message: String) -> void: @@ -316,7 +303,7 @@ func _template_copy_progressed(value: int, message: String) -> void: func _template_copy_completed() -> void: - get_ok_button().disabled = false + get_parent().get_ok_button().disabled = false btn_change_template.disabled = true $PanelContainer/VBoxContainer.modulate.a = 1 @@ -324,4 +311,12 @@ func _template_copy_completed() -> void: 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.tscn b/addons/popochiu/editor/popups/setup/setup.tscn index 99f147739..ef2f0ffce 100644 --- a/addons/popochiu/editor/popups/setup/setup.tscn +++ b/addons/popochiu/editor/popups/setup/setup.tscn @@ -20,31 +20,32 @@ corner_radius_top_right = 4 corner_radius_bottom_right = 4 corner_radius_bottom_left = 4 -[node name="Setup" type="AcceptDialog"] -gui_embed_subwindows = true -title = "Setup" -initial_position = 2 -size = Vector2i(560, 608) -popup_window = true +[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="."] -offset_left = 8.0 -offset_top = 8.0 -offset_right = 552.0 -offset_bottom = 559.0 +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 -size_flags_horizontal = 4 -size_flags_vertical = 5 +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] - +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 @@ -170,10 +171,10 @@ 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. +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" @@ -183,7 +184,6 @@ unique_name_in_owner = true layout_mode = 2 item_count = 3 popup/item_0/text = "Custom" -popup/item_0/id = 0 popup/item_1/text = "2D" popup/item_1/id = 1 popup/item_2/text = "Pixel" @@ -222,14 +222,13 @@ 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="GridContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer"] +[node name="GUITemplates" type="HBoxContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer"] unique_name_in_owner = true layout_mode = 2 -theme_override_constants/h_separation = 4 -theme_override_constants/v_separation = 4 -columns = 4 +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 diff --git a/addons/popochiu/engine/audio_manager/audio_cue.gd b/addons/popochiu/engine/audio_manager/audio_cue.gd index b728f7138..c0800bd21 100644 --- a/addons/popochiu/engine/audio_manager/audio_cue.gd +++ b/addons/popochiu/engine/audio_manager/audio_cue.gd @@ -17,7 +17,7 @@ extends Resource ## 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 := 1.0 +@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. @@ -156,16 +156,9 @@ func set_loop(value: bool) -> void: 'AudioStreamOggVorbis', 'AudioStreamMP3': audio.loop = value 'AudioStreamWAV': - if (audio as AudioStreamWAV).get_loop_end() == 0 && value: - PopochiuUtils.print_warning( - "[b]%s[/b]" % resource_name +\ - " does not have the correct metadata to loop, please check" +\ - " AudioStreamWAV documentation" - ) - else: - (audio as AudioStreamWAV).loop_mode =\ - AudioStreamWAV.LOOP_FORWARD if value\ - else AudioStreamWAV.LOOP_DISABLED + (audio as AudioStreamWAV).loop_mode = ( + AudioStreamWAV.LOOP_FORWARD if value else AudioStreamWAV.LOOP_DISABLED + ) notify_property_list_changed() diff --git a/addons/popochiu/engine/cursor/cursor.gd b/addons/popochiu/engine/cursor/cursor.gd index 1c1f9c770..b5a66a569 100644 --- a/addons/popochiu/engine/cursor/cursor.gd +++ b/addons/popochiu/engine/cursor/cursor.gd @@ -31,8 +31,6 @@ func _ready(): # Connect to autoload signals E.ready.connect(show_cursor) - G.blocked.connect(_on_gui_blocked) - G.unblocked.connect(_on_gui_unblocked) func _process(delta): @@ -163,16 +161,3 @@ func get_cursor_height() -> int: #endregion - -#region Private #################################################################################### -func _on_gui_blocked() -> void: - show_cursor("wait") - is_blocked = true - - -func _on_gui_unblocked() -> void: - is_blocked = false - show_cursor(G.get_cursor_name()) - - -#endregion diff --git a/addons/popochiu/engine/cursor/cursor.tscn b/addons/popochiu/engine/cursor/cursor.tscn index 8e7cde86c..21826be8c 100644 --- a/addons/popochiu/engine/cursor/cursor.tscn +++ b/addons/popochiu/engine/cursor/cursor.tscn @@ -23,10 +23,6 @@ region = Rect2(96, 0, 32, 32) atlas = ExtResource("1") region = Rect2(128, 0, 32, 32) -[sub_resource type="AtlasTexture" id="9"] -atlas = ExtResource("1") -region = Rect2(160, 0, 32, 32) - [sub_resource type="AtlasTexture" id="4"] atlas = ExtResource("1") region = Rect2(192, 0, 32, 32) @@ -43,6 +39,10 @@ region = Rect2(256, 0, 32, 32) 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) @@ -110,14 +110,6 @@ animations = [{ }, { "frames": [{ "duration": 1.0, -"texture": SubResource("9") -}], -"loop": false, -"name": &"idle", -"speed": 5.0 -}, { -"frames": [{ -"duration": 1.0, "texture": SubResource("4") }, { "duration": 1.0, @@ -145,6 +137,14 @@ animations = [{ }, { "frames": [{ "duration": 1.0, +"texture": SubResource("9") +}], +"loop": false, +"name": &"normal", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, "texture": SubResource("2") }, { "duration": 1.0, @@ -205,7 +205,7 @@ script = ExtResource("1_n3epl") [node name="MainCursor" type="AnimatedSprite2D" parent="."] texture_filter = 1 sprite_frames = SubResource("1") -animation = &"active" +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 index 7ab8b9e51..194b68117 100644 --- a/addons/popochiu/engine/cursor/cursor_animations.tres +++ b/addons/popochiu/engine/cursor/cursor_animations.tres @@ -1,7 +1,7 @@ [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/graphic_interface/templates/simple_click/images/simple_click_cursor.png" id="2_05hav"] +[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") 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 000000000..f7f890723 --- /dev/null +++ b/addons/popochiu/engine/helpers/popochiu_characters_helper.gd @@ -0,0 +1,79 @@ +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'(?:\[(?